// { "framework": "Vue"} 

/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, {
/******/ 				configurable: false,
/******/ 				enumerable: true,
/******/ 				get: getter
/******/ 			});
/******/ 		}
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 9);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

exports.getMusicFlagByXYValue = getMusicFlagByXYValue;
exports.getMusicFlagByMusicNameYValue = getMusicFlagByMusicNameYValue;
exports.addEightByXYValue = addEightByXYValue;
exports.subEightByXYValue = subEightByXYValue;
exports.getInterval = getInterval;
exports.computeInterval = computeInterval;
exports.getIntervalByIntervalName = getIntervalByIntervalName;
exports.getByInterval = getByInterval;
exports.sortByChordRules = sortByChordRules;
exports.getTriad = getTriad;
exports.getSeventh = getSeventh;
exports.getSameSoundKey = getSameSoundKey;

var _musicKeyValue = __webpack_require__(6);

var _musicNameValue = __webpack_require__(52);

var _musicInterval = __webpack_require__(7);

var _common = __webpack_require__(1);

var _musicChord = __webpack_require__(53);

// 根据x y值获取音符
function getMusicFlagByXYValue(xValue, yValue) {
    var item = _musicKeyValue.data.find(function (item) {
        return item.yValue === yValue.toString() && item.xValue === xValue.toString();
    });
    return item ? _extends({ name: item.level + ' ' + item.musicName + item.groupLevel }, item) : null;
}

// 根据x y值获取音符
function getMusicFlagByMusicNameYValue(musicName, yValue) {
    var item = _musicKeyValue.data.find(function (item) {
        return item.yValue === yValue.toString() && item.musicName.toLowerCase() === musicName.toString().toLowerCase();
    });
    return item ? _extends({ name: item.level + ' ' + item.musicName + item.groupLevel }, item) : null;
}
// 根据x y增加一个八度
function addEightByXYValue(xValue, yValue) {
    var currentIndex = -1;
    _musicKeyValue.data.find(function (item, index) {
        if (item.yValue === yValue + '' && item.xValue === xValue) {
            currentIndex = index;
            return item;
        }
    });
    if (currentIndex === -1) return null;
    //如果是大字组
    var nextIndex = currentIndex + 35;
    if (nextIndex >= _musicKeyValue.data.length || nextIndex < 0) return null;
    var nextEight = _musicKeyValue.data[nextIndex];
    return _extends({ name: nextEight.level + ' ' + nextEight.musicName + nextEight.groupLevel }, nextEight);
}

// 根据x y减去一个八度
function subEightByXYValue(xValue, yValue) {
    var currentIndex = -1;
    _musicKeyValue.data.find(function (item, index) {
        if (item.yValue === yValue + '' && item.xValue === xValue) {
            currentIndex = index;
            return item;
        }
    });
    if (currentIndex === -1) return null;
    //如果是大字组
    var nextIndex = currentIndex - 35;
    if (nextIndex >= _musicKeyValue.data.length || nextIndex < 0) return null;
    var nextEight = _musicKeyValue.data[nextIndex];
    return _extends({ name: nextEight.level + ' ' + nextEight.musicName + nextEight.groupLevel }, nextEight);
}

// 根据x y获取音程
function getInterval(xValue, yValue) {
    var res = _musicInterval.data.find(function (item) {
        return item.xValue === xValue.toString() && item.yValue === yValue.toString();
    });
    return res ? res.result : undefined;
}

//取两音之间的音程
function computeInterval(xValue1, yValue1, xValue2, yValue2) {
    var isChord = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;

    //把音名转换为数字
    var format_xValue1 = +xValue1;
    var format_xValue2 = +xValue2;
    //1音减去2音
    var xValue = yValue1 > yValue2 || isChord ? format_xValue1 - format_xValue2 : format_xValue2 - format_xValue1;
    var yValue = yValue1 > yValue2 || isChord ? +yValue1 - +yValue2 : +yValue2 - +yValue1;
    var count = yValue < 0 || yValue > 12 ? -1 : 0;
    var result = undefined;
    //判断是否有负数结果
    while (xValue < 0) {
        xValue += 7;
    } //如果大于7就减到小于7
    while (xValue > 7) {
        xValue -= 7;
    }while (yValue < 0) {
        count++;
        yValue += 12;
    }
    //先做一次匹配
    //匹配音程
    result = getInterval(xValue, yValue);
    while (yValue > 12) {
        count++;
        yValue -= 12;
    }
    var scale = count * 7;
    if (!result)
        //匹配音程
        result = getInterval(xValue, yValue);
    // toast(result);
    return result ? result.replace(/\d/g, function (old) {
        return scale + +old;
    }) : undefined;
}

//根据音程名取音程对象
function getIntervalByIntervalName(intervalName) {
    return _musicInterval.data.find(function (item) {
        return item.result === intervalName;
    }) || null;
}

//根据1音和度数求另一个音
function getByInterval(position, key, interval) {
    //取音名
    var format_xValue1 = (0, _musicNameValue.getMusicNameValue)(key.musicName);
    if (!format_xValue1) return format_xValue1;
    //根据音程名取音程x y值
    var result = getIntervalByIntervalName(interval);
    if (!result) return result;
    var format_xValue2 = result.xValue;
    var yValue1 = key.yValue;
    var yValue2 = result.yValue;
    var res = undefined;
    if (position === '上方') {
        //上方音程
        //1音加上音程
        var xValue = +format_xValue2 + +format_xValue1;
        var yValue = +yValue1 + +yValue2;
        //判断是否有过剩结果
        while (xValue > 7) {
            xValue -= 7;
        }xValue = (0, _musicNameValue.getMusicNameByValue)(xValue + '');
        //根据x y值取对应的音
        res = getMusicFlagByMusicNameYValue(xValue, yValue) || undefined;
    } else {
        //下方音程
        //上方音程
        //1音减去音程
        var _xValue = yValue1 > yValue2 ? format_xValue1 - format_xValue2 : format_xValue2 - format_xValue1;
        var _yValue = yValue1 > yValue2 ? +yValue1 - +yValue2 : +yValue2 - +yValue1;
        //判断是否有过剩结果
        while (_xValue < 0) {
            _xValue += 7;
        }while (_yValue < 0) {
            _yValue += 12;
        } // while (yValue > 12) yValue -= 12;
        // toast(xValue+'---'+yValue)
        _xValue = (0, _musicNameValue.getMusicNameByValue)(_xValue + '');
        //根据x y值取对应的音
        res = getMusicFlagByMusicNameYValue(_xValue, _yValue) || undefined;
    }
    if (!res) {
        (0, _common.toast)('无法通过该音程和音取得对应的音');
    } else {
        return res;
    }
}

//将传入进来的音数组根据和弦排列重新排序
function sortByChordRules() {
    for (var _len = arguments.length, key = Array(_len), _key = 0; _key < _len; _key++) {
        key[_key] = arguments[_key];
    }

    if (!key || key.length < 1) return null;
    var result = undefined;
    //根据音名重新排列顺序
    if (key.length === 3) {
        //三和弦排序表
        var triadRule = ['ceg', 'egb', 'gbd', 'bdf', 'dfa', 'fac', 'ace'];
        //判断三个音是否符合排序表中的同一组结果
        result = triadRule.find(function (item) {
            return item.indexOf(key[0].musicName.toLowerCase()) !== -1 && item.indexOf(key[1].musicName.toLowerCase()) !== -1 && item.indexOf(key[2].musicName.toLowerCase()) !== -1;
        });
    } else if (key.length === 4) {
        //七和弦排序表
        var seventhRule = ['cegb', 'egbd', 'gbdf', 'bdfa', 'dfac', 'face', 'aceg'];
        //判断三个音是否符合排序表中的同一组结果
        result = seventhRule.find(function (item) {
            return item.indexOf(key[0].musicName.toLowerCase()) !== -1 && item.indexOf(key[1].musicName.toLowerCase()) !== -1 && item.indexOf(key[2].musicName.toLowerCase()) !== -1 && item.indexOf(key[3].musicName.toLowerCase()) !== -1;
        });
    }
    if (!result) return result;
    //给予键一个排序号
    key.forEach(function (item) {
        return item.sortId = result.indexOf(item.musicName.toLowerCase());
    });
    return key.sort((0, _common.singleCompare)('sortId'));
}

//已知三音求性质及三和弦
function getTriad(first, second, third) {
    //排序
    var sortedKeys = sortByChordRules(first, second, third);
    if (!sortedKeys || sortedKeys.length < 3) return undefined;
    //取根音
    var rootKey = sortedKeys[0];
    //取三音
    var thirdKey = sortedKeys[1];
    //取五音
    var fifthKey = sortedKeys[2];
    //计算三音-根音的音程
    var firstIntervalName = computeInterval(thirdKey.xValue, thirdKey.yValue, rootKey.xValue, rootKey.yValue, true);
    //计算五音-三音的音程
    var secondIntervalName = computeInterval(fifthKey.xValue, fifthKey.yValue, thirdKey.xValue, thirdKey.yValue, true);
    if ((0, _common.hasEmpty)(firstIntervalName, secondIntervalName)) return undefined;
    //根据音程获取对应三和弦
    var result = _musicChord.triad.find(function (item) {
        return item.first === firstIntervalName && item.third === secondIntervalName;
    });
    if (!result) return undefined;
    result = result.name;
    var minKey = (0, _common.deepCopyProperties)(sortedKeys).sort((0, _common.singleCompare)('sortId'));
    if (!minKey || minKey.length < 1) return undefined;
    var min = minKey[0]; //低音
    if ((0, _common.compareKey)(min, thirdKey)) {
        //如果三音为低音,就是六和弦
        result = result.replace('三和弦', '六和弦');
    } else if ((0, _common.compareKey)(min, fifthKey)) {
        //如果五音为低音,就是四六和弦
        result = result.replace('三和弦', '四六和弦');
    }
    return result;
}

//已知四音求性质及七和弦
function getSeventh(first, second, third, fourth) {
    //排序
    var sortedKeys = sortByChordRules(first, second, third, fourth);
    if (!sortedKeys || sortedKeys.length < 4) return undefined;
    //取根音
    var rootKey = sortedKeys[0];
    //取三音
    var thirdKey = sortedKeys[1];
    //取五音
    var fifthKey = sortedKeys[2];
    //取七音
    var seventhKey = sortedKeys[3];
    //计算三音-根音的音程
    var firstIntervalName = computeInterval(thirdKey.xValue, thirdKey.yValue, rootKey.xValue, rootKey.yValue, true);
    //计算五音-三音的音程
    var secondIntervalName = computeInterval(fifthKey.xValue, fifthKey.yValue, thirdKey.xValue, thirdKey.yValue, true);
    //计算七音-五音的音程
    var thirdIntervalName = computeInterval(seventhKey.xValue, seventhKey.yValue, fifthKey.xValue, fifthKey.yValue, true);
    if ((0, _common.hasEmpty)(firstIntervalName, secondIntervalName, thirdIntervalName)) return undefined;
    // toast(firstIntervalName+secondIntervalName+thirdIntervalName)
    //根据音程获取对应三和弦
    var result = _musicChord.seventh.find(function (item) {
        return item.first === firstIntervalName && item.third === secondIntervalName && item.fifth === thirdIntervalName;
    });
    if (!result) return undefined;
    result = result.name;
    var minKey = (0, _common.deepCopyProperties)(sortedKeys).sort((0, _common.singleCompare)('sortId'));
    if (!minKey || minKey.length < 1) return undefined;
    var min = minKey[0]; //低音
    if ((0, _common.compareKey)(min, thirdKey)) {
        //如果三音为低音,就是六和弦
        result = result.replace('七和弦', '五六和弦');
    } else if ((0, _common.compareKey)(min, fifthKey)) {
        //如果五音为低音,就是四六和弦
        result = result.replace('七和弦', '三四和弦');
    } else if ((0, _common.compareKey)(min, seventhKey)) {
        //如果七音为低音,就是二和弦
        result = result.replace('七和弦', '二和弦');
    }
    return result;
}

//获取某个音的所有同组等音
function getSameSoundKey(key) {
    if (!key) return undefined;
    var sameSounds = [];
    _musicKeyValue.data.forEach(function (item) {
        //如果y值相等，说明是同等音高
        if (!(0, _common.compareKey)(item, key) && item.yValue === key.yValue && item.groupLevelName === key.groupLevelName) {
            sameSounds.push(getMusicFlagByXYValue(item.xValue, item.yValue));
        }
    });
    return sameSounds;
}

/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

exports.toast = toast;
exports.singleCompare = singleCompare;
exports.multiCompare = multiCompare;
exports.compareKey = compareKey;
exports.deepCopyProperties = deepCopyProperties;
exports.hasEmpty = hasEmpty;
exports.getDeviceHeight = getDeviceHeight;
exports.getFormatHeightPX = getFormatHeightPX;
var modal = weex.requireModule('modal');

function toast(message) {
    var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.1;

    modal.toast({
        message: message,
        duration: duration
    });
}

//定义compare函数，参数name是对象的某一个属性，比如age、salary
//返回一个可以用来对包含该成员的对象数组进行排序的比较函数
function singleCompare(name) {
    return function (o, p) {
        var a = void 0,
            b = void 0;
        if ((typeof o === "undefined" ? "undefined" : _typeof(o)) === "object" && (typeof p === "undefined" ? "undefined" : _typeof(p)) === "object" && o && p) {
            a = o[name];
            b = p[name];
            if (a === b) {
                return 0;
            }
            if ((typeof a === "undefined" ? "undefined" : _typeof(a)) === (typeof b === "undefined" ? "undefined" : _typeof(b))) {
                return a < b ? -1 : 1;
            }
            return (typeof a === "undefined" ? "undefined" : _typeof(a)) < (typeof b === "undefined" ? "undefined" : _typeof(b)) ? -1 : 1;
        } else {
            throw "error";
        }
    };
}

//多属性比较函数
//定义compare函数，name是对象的某一个属性，fun是一个比较函数
function multiCompare(name, fun) {
    return function (o, p) {
        var a = void 0,
            b = void 0;
        if (o && p && (typeof o === "undefined" ? "undefined" : _typeof(o)) === 'object' && (typeof p === "undefined" ? "undefined" : _typeof(p)) === 'object') {
            a = o[name];
            b = p[name];
            //当o[name] 和 p[name] 相等时，利用fun函数根据另一个属性来进行比较
            if (a === b) {
                return typeof fun === 'function' ? fun(o, p) : 0;
            }
            if ((typeof a === "undefined" ? "undefined" : _typeof(a)) === (typeof b === "undefined" ? "undefined" : _typeof(b))) {
                return a < b ? -1 : 1;
            }
            return (typeof a === "undefined" ? "undefined" : _typeof(a)) < (typeof b === "undefined" ? "undefined" : _typeof(b)) ? -1 : 1;
        } else {
            throw "error";
        }
    };
}

//比较两个键是否相等
function compareKey(target, target2) {
    return target.xValue === target2.xValue && target.yValue === target2.yValue;
}

//深拷贝对象
function deepCopyProperties(target) {
    return JSON.parse(JSON.stringify(target));
}

//是否有空对象
function hasEmpty() {
    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
    }

    if (!args || args.length < 1) return true;
    var _iteratorNormalCompletion = true;
    var _didIteratorError = false;
    var _iteratorError = undefined;

    try {
        for (var _iterator = args[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
            var arg = _step.value;

            if (!arg) {
                return true;
            }
        }
    } catch (err) {
        _didIteratorError = true;
        _iteratorError = err;
    } finally {
        try {
            if (!_iteratorNormalCompletion && _iterator.return) {
                _iterator.return();
            }
        } finally {
            if (_didIteratorError) {
                throw _iteratorError;
            }
        }
    }
}

//获取屏幕高度
function getDeviceHeight() {
    var scale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;

    return ~~(750 / weex.config.env.deviceWidth * weex.config.env.deviceHeight * scale);
}

//根据px值获取真实屏幕高度自适应值
function getFormatHeightPX(px) {
    return ~~getDeviceHeight(px / 1460);
}

/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.getImagePath = getImagePath;
// e.g. 图片文件名是 test.jpg, 转换得到的图片地址为
// - H5      : images/test.jpg        images和所在html路径同级
// - Android : local:///test          local代表项目各dpi目录,一般放在hdpi里一张即可
// - iOS     : local///test.jpg       local代表从项目中全局扫描 test.jpg可放至项目中任何目录
function getImagePath(name) {
    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
    var abs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '../../';

    if (WXEnvironment.platform === 'Web') {
        return abs + 'static/img/' + name + type;
    } else if (WXEnvironment.platform === 'android') {
        return 'local:///' + name;
    } else {
        return 'local:///' + name + type;
    }
}

/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _index = __webpack_require__(15);

Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_index).default;
  }
});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var isNative = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) !== 'object';

var isFn = function isFn(fn) {
	return typeof fn === 'function';
};

var isPhone = function isPhone(str) {
	if (typeof str === 'number') {
		str = str.toString();
	} else if (typeof str !== 'string') {
		return false;
	}

	return (/^\+?[\d\-\#\*\.\(\)]+$/.test(str)
	);
};

var isEmail = function isEmail(str) {
	if (typeof str !== 'string') {
		return false;
	}

	return (/^(\w)+([\.\-\_]\w+)*@(\w)+(([\.\-\_]\w+)+)$/.test(str)
	);
};

module.exports = {
	isNative: isNative,
	isFn: isFn,
	isPhone: isPhone,
	isEmail: isEmail
};

/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _index = __webpack_require__(19);

Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_index).default;
  }
});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});
var data = exports.data = [{ "level": "♭♭", "musicName": "A", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "19", "xValue": "37" }, { "level": "♭", "musicName": "A", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "20", "xValue": "37" }, { "level": "", "musicName": "A", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "21", "xValue": "37" }, { "level": "♯", "musicName": "A", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "22", "xValue": "37" }, { "level": "×", "musicName": "A", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "23", "xValue": "37" }, { "level": "♭♭", "musicName": "B", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "21", "xValue": "38" }, { "level": "♭", "musicName": "B", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "22", "xValue": "38" }, { "level": "", "musicName": "B", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "23", "xValue": "38" }, { "level": "♯", "musicName": "B", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "24", "xValue": "38" }, { "level": "×", "musicName": "B", "groupLevel": "2", "groupLevelName": "大字二组", "yValue": "25", "xValue": "38" }, { "level": "♭♭", "musicName": "C", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "22", "xValue": "39" }, { "level": "♭", "musicName": "C", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "23", "xValue": "39" }, { "level": "", "musicName": "C", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "24", "xValue": "39" }, { "level": "♯", "musicName": "C", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "25", "xValue": "39" }, { "level": "×", "musicName": "C", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "26", "xValue": "39" }, { "level": "♭♭", "musicName": "D", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "24", "xValue": "40" }, { "level": "♭", "musicName": "D", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "25", "xValue": "40" }, { "level": "", "musicName": "D", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "26", "xValue": "40" }, { "level": "♯", "musicName": "D", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "27", "xValue": "40" }, { "level": "×", "musicName": "D", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "28", "xValue": "40" }, { "level": "♭♭", "musicName": "E", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "26", "xValue": "41" }, { "level": "♭", "musicName": "E", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "27", "xValue": "41" }, { "level": "", "musicName": "E", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "28", "xValue": "41" }, { "level": "♯", "musicName": "E", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "29", "xValue": "41" }, { "level": "×", "musicName": "E", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "30", "xValue": "41" }, { "level": "♭♭", "musicName": "F", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "27", "xValue": "42" }, { "level": "♭", "musicName": "F", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "28", "xValue": "42" }, { "level": "", "musicName": "F", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "29", "xValue": "42" }, { "level": "♯", "musicName": "F", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "30", "xValue": "42" }, { "level": "×", "musicName": "F", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "31", "xValue": "42" }, { "level": "♭♭", "musicName": "G", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "29", "xValue": "43" }, { "level": "♭", "musicName": "G", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "30", "xValue": "43" }, { "level": "", "musicName": "G", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "31", "xValue": "43" }, { "level": "♯", "musicName": "G", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "32", "xValue": "43" }, { "level": "×", "musicName": "G", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "33", "xValue": "43" }, { "level": "♭♭", "musicName": "A", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "31", "xValue": "44" }, { "level": "♭", "musicName": "A", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "32", "xValue": "44" }, { "level": "", "musicName": "A", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "33", "xValue": "44" }, { "level": "♯", "musicName": "A", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "34", "xValue": "44" }, { "level": "×", "musicName": "A", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "35", "xValue": "44" }, { "level": "♭♭", "musicName": "B", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "33", "xValue": "45" }, { "level": "♭", "musicName": "B", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "34", "xValue": "45" }, { "level": "", "musicName": "B", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "35", "xValue": "45" }, { "level": "♯", "musicName": "B", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "36", "xValue": "45" }, { "level": "×", "musicName": "B", "groupLevel": "1", "groupLevelName": "大字一组", "yValue": "37", "xValue": "45" }, { "level": "♭♭", "musicName": "C", "groupLevel": "", "groupLevelName": "大字组", "yValue": "34", "xValue": "46" }, { "level": "♭", "musicName": "C", "groupLevel": "", "groupLevelName": "大字组", "yValue": "35", "xValue": "46" }, { "level": "", "musicName": "C", "groupLevel": "", "groupLevelName": "大字组", "yValue": "36", "xValue": "46" }, { "level": "♯", "musicName": "C", "groupLevel": "", "groupLevelName": "大字组", "yValue": "37", "xValue": "46" }, { "level": "×", "musicName": "C", "groupLevel": "", "groupLevelName": "大字组", "yValue": "38", "xValue": "46" }, { "level": "♭♭", "musicName": "D", "groupLevel": "", "groupLevelName": "大字组", "yValue": "36", "xValue": "47" }, { "level": "♭", "musicName": "D", "groupLevel": "", "groupLevelName": "大字组", "yValue": "37", "xValue": "47" }, { "level": "", "musicName": "D", "groupLevel": "", "groupLevelName": "大字组", "yValue": "38", "xValue": "47" }, { "level": "♯", "musicName": "D", "groupLevel": "", "groupLevelName": "大字组", "yValue": "39", "xValue": "47" }, { "level": "×", "musicName": "D", "groupLevel": "", "groupLevelName": "大字组", "yValue": "40", "xValue": "47" }, { "level": "♭♭", "musicName": "E", "groupLevel": "", "groupLevelName": "大字组", "yValue": "38", "xValue": "48" }, { "level": "♭", "musicName": "E", "groupLevel": "", "groupLevelName": "大字组", "yValue": "39", "xValue": "48" }, { "level": "", "musicName": "E", "groupLevel": "", "groupLevelName": "大字组", "yValue": "40", "xValue": "48" }, { "level": "♯", "musicName": "E", "groupLevel": "", "groupLevelName": "大字组", "yValue": "41", "xValue": "48" }, { "level": "×", "musicName": "E", "groupLevel": "", "groupLevelName": "大字组", "yValue": "42", "xValue": "48" }, { "level": "♭♭", "musicName": "F", "groupLevel": "", "groupLevelName": "大字组", "yValue": "39", "xValue": "49" }, { "level": "♭", "musicName": "F", "groupLevel": "", "groupLevelName": "大字组", "yValue": "40", "xValue": "49" }, { "level": "", "musicName": "F", "groupLevel": "", "groupLevelName": "大字组", "yValue": "41", "xValue": "49" }, { "level": "♯", "musicName": "F", "groupLevel": "", "groupLevelName": "大字组", "yValue": "42", "xValue": "49" }, { "level": "×", "musicName": "F", "groupLevel": "", "groupLevelName": "大字组", "yValue": "43", "xValue": "49" }, { "level": "♭♭", "musicName": "G", "groupLevel": "", "groupLevelName": "大字组", "yValue": "41", "xValue": "50" }, { "level": "♭", "musicName": "G", "groupLevel": "", "groupLevelName": "大字组", "yValue": "42", "xValue": "50" }, { "level": "", "musicName": "G", "groupLevel": "", "groupLevelName": "大字组", "yValue": "43", "xValue": "50" }, { "level": "♯", "musicName": "G", "groupLevel": "", "groupLevelName": "大字组", "yValue": "44", "xValue": "50" }, { "level": "×", "musicName": "G", "groupLevel": "", "groupLevelName": "大字组", "yValue": "45", "xValue": "50" }, { "level": "♭♭", "musicName": "A", "groupLevel": "", "groupLevelName": "大字组", "yValue": "43", "xValue": "51" }, { "level": "♭", "musicName": "A", "groupLevel": "", "groupLevelName": "大字组", "yValue": "44", "xValue": "51" }, { "level": "", "musicName": "A", "groupLevel": "", "groupLevelName": "大字组", "yValue": "45", "xValue": "51" }, { "level": "♯", "musicName": "A", "groupLevel": "", "groupLevelName": "大字组", "yValue": "46", "xValue": "51" }, { "level": "×", "musicName": "A", "groupLevel": "", "groupLevelName": "大字组", "yValue": "47", "xValue": "51" }, { "level": "♭♭", "musicName": "B", "groupLevel": "", "groupLevelName": "大字组", "yValue": "45", "xValue": "52" }, { "level": "♭", "musicName": "B", "groupLevel": "", "groupLevelName": "大字组", "yValue": "46", "xValue": "52" }, { "level": "", "musicName": "B", "groupLevel": "", "groupLevelName": "大字组", "yValue": "47", "xValue": "52" }, { "level": "♯", "musicName": "B", "groupLevel": "", "groupLevelName": "大字组", "yValue": "48", "xValue": "52" }, { "level": "×", "musicName": "B", "groupLevel": "", "groupLevelName": "大字组", "yValue": "49", "xValue": "52" }, { "level": "♭♭", "musicName": "c", "groupLevel": "", "groupLevelName": "小字组", "yValue": "46", "xValue": "53" }, { "level": "♭", "musicName": "c", "groupLevel": "", "groupLevelName": "小字组", "yValue": "47", "xValue": "53" }, { "level": "", "musicName": "c", "groupLevel": "", "groupLevelName": "小字组", "yValue": "48", "xValue": "53" }, { "level": "♯", "musicName": "c", "groupLevel": "", "groupLevelName": "小字组", "yValue": "49", "xValue": "53" }, { "level": "×", "musicName": "c", "groupLevel": "", "groupLevelName": "小字组", "yValue": "50", "xValue": "53" }, { "level": "♭♭", "musicName": "d", "groupLevel": "", "groupLevelName": "小字组", "yValue": "48", "xValue": "54" }, { "level": "♭", "musicName": "d", "groupLevel": "", "groupLevelName": "小字组", "yValue": "49", "xValue": "54" }, { "level": "", "musicName": "d", "groupLevel": "", "groupLevelName": "小字组", "yValue": "50", "xValue": "54" }, { "level": "♯", "musicName": "d", "groupLevel": "", "groupLevelName": "小字组", "yValue": "51", "xValue": "54" }, { "level": "×", "musicName": "d", "groupLevel": "", "groupLevelName": "小字组", "yValue": "52", "xValue": "54" }, { "level": "♭♭", "musicName": "e", "groupLevel": "", "groupLevelName": "小字组", "yValue": "50", "xValue": "55" }, { "level": "♭", "musicName": "e", "groupLevel": "", "groupLevelName": "小字组", "yValue": "51", "xValue": "55" }, { "level": "", "musicName": "e", "groupLevel": "", "groupLevelName": "小字组", "yValue": "52", "xValue": "55" }, { "level": "♯", "musicName": "e", "groupLevel": "", "groupLevelName": "小字组", "yValue": "53", "xValue": "55" }, { "level": "×", "musicName": "e", "groupLevel": "", "groupLevelName": "小字组", "yValue": "54", "xValue": "55" }, { "level": "♭♭", "musicName": "f", "groupLevel": "", "groupLevelName": "小字组", "yValue": "51", "xValue": "56" }, { "level": "♭", "musicName": "f", "groupLevel": "", "groupLevelName": "小字组", "yValue": "52", "xValue": "56" }, { "level": "", "musicName": "f", "groupLevel": "", "groupLevelName": "小字组", "yValue": "53", "xValue": "56" }, { "level": "♯", "musicName": "f", "groupLevel": "", "groupLevelName": "小字组", "yValue": "54", "xValue": "56" }, { "level": "×", "musicName": "f", "groupLevel": "", "groupLevelName": "小字组", "yValue": "55", "xValue": "56" }, { "level": "♭♭", "musicName": "g", "groupLevel": "", "groupLevelName": "小字组", "yValue": "53", "xValue": "57" }, { "level": "♭", "musicName": "g", "groupLevel": "", "groupLevelName": "小字组", "yValue": "54", "xValue": "57" }, { "level": "", "musicName": "g", "groupLevel": "", "groupLevelName": "小字组", "yValue": "55", "xValue": "57" }, { "level": "♯", "musicName": "g", "groupLevel": "", "groupLevelName": "小字组", "yValue": "56", "xValue": "57" }, { "level": "×", "musicName": "g", "groupLevel": "", "groupLevelName": "小字组", "yValue": "57", "xValue": "57" }, { "level": "♭♭", "musicName": "a", "groupLevel": "", "groupLevelName": "小字组", "yValue": "55", "xValue": "58" }, { "level": "♭", "musicName": "a", "groupLevel": "", "groupLevelName": "小字组", "yValue": "56", "xValue": "58" }, { "level": "", "musicName": "a", "groupLevel": "", "groupLevelName": "小字组", "yValue": "57", "xValue": "58" }, { "level": "♯", "musicName": "a", "groupLevel": "", "groupLevelName": "小字组", "yValue": "58", "xValue": "58" }, { "level": "×", "musicName": "a", "groupLevel": "", "groupLevelName": "小字组", "yValue": "59", "xValue": "58" }, { "level": "♭♭", "musicName": "b", "groupLevel": "", "groupLevelName": "小字组", "yValue": "57", "xValue": "59" }, { "level": "♭", "musicName": "b", "groupLevel": "", "groupLevelName": "小字组", "yValue": "58", "xValue": "59" }, { "level": "", "musicName": "b", "groupLevel": "", "groupLevelName": "小字组", "yValue": "59", "xValue": "59" }, { "level": "♯", "musicName": "b", "groupLevel": "", "groupLevelName": "小字组", "yValue": "60", "xValue": "59" }, { "level": "×", "musicName": "b", "groupLevel": "", "groupLevelName": "小字组", "yValue": "61", "xValue": "59" }, { "level": "♭♭", "musicName": "c", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "58", "xValue": "60" }, { "level": "♭", "musicName": "c", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "59", "xValue": "60" }, { "level": "", "musicName": "c", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "60", "xValue": "60" }, { "level": "♯", "musicName": "c", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "61", "xValue": "60" }, { "level": "×", "musicName": "c", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "62", "xValue": "60" }, { "level": "♭♭", "musicName": "d", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "60", "xValue": "61" }, { "level": "♭", "musicName": "d", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "61", "xValue": "61" }, { "level": "", "musicName": "d", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "62", "xValue": "61" }, { "level": "♯", "musicName": "d", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "63", "xValue": "61" }, { "level": "×", "musicName": "d", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "64", "xValue": "61" }, { "level": "♭♭", "musicName": "e", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "62", "xValue": "62" }, { "level": "♭", "musicName": "e", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "63", "xValue": "62" }, { "level": "", "musicName": "e", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "64", "xValue": "62" }, { "level": "♯", "musicName": "e", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "65", "xValue": "62" }, { "level": "×", "musicName": "e", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "66", "xValue": "62" }, { "level": "♭♭", "musicName": "f", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "63", "xValue": "63" }, { "level": "♭", "musicName": "f", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "64", "xValue": "63" }, { "level": "", "musicName": "f", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "65", "xValue": "63" }, { "level": "♯", "musicName": "f", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "66", "xValue": "63" }, { "level": "×", "musicName": "f", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "67", "xValue": "63" }, { "level": "♭♭", "musicName": "g", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "65", "xValue": "64" }, { "level": "♭", "musicName": "g", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "66", "xValue": "64" }, { "level": "", "musicName": "g", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "67", "xValue": "64" }, { "level": "♯", "musicName": "g", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "68", "xValue": "64" }, { "level": "×", "musicName": "g", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "69", "xValue": "64" }, { "level": "♭♭", "musicName": "a", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "67", "xValue": "65" }, { "level": "♭", "musicName": "a", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "68", "xValue": "65" }, { "level": "", "musicName": "a", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "69", "xValue": "65" }, { "level": "♯", "musicName": "a", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "70", "xValue": "65" }, { "level": "×", "musicName": "a", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "71", "xValue": "65" }, { "level": "♭♭", "musicName": "b", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "69", "xValue": "66" }, { "level": "♭", "musicName": "b", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "70", "xValue": "66" }, { "level": "", "musicName": "b", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "71", "xValue": "66" }, { "level": "♯", "musicName": "b", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "72", "xValue": "66" }, { "level": "×", "musicName": "b", "groupLevel": "1", "groupLevelName": "小字一组", "yValue": "73", "xValue": "66" }, { "level": "♭♭", "musicName": "c", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "70", "xValue": "67" }, { "level": "♭", "musicName": "c", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "71", "xValue": "67" }, { "level": "", "musicName": "c", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "72", "xValue": "67" }, { "level": "♯", "musicName": "c", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "73", "xValue": "67" }, { "level": "×", "musicName": "c", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "74", "xValue": "67" }, { "level": "♭♭", "musicName": "d", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "72", "xValue": "68" }, { "level": "♭", "musicName": "d", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "73", "xValue": "68" }, { "level": "", "musicName": "d", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "74", "xValue": "68" }, { "level": "♯", "musicName": "d", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "74", "xValue": "68" }, { "level": "×", "musicName": "d", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "75", "xValue": "68" }, { "level": "♭♭", "musicName": "e", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "74", "xValue": "69" }, { "level": "♭", "musicName": "e", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "75", "xValue": "69" }, { "level": "", "musicName": "e", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "76", "xValue": "69" }, { "level": "♯", "musicName": "e", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "77", "xValue": "69" }, { "level": "×", "musicName": "e", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "78", "xValue": "69" }, { "level": "♭♭", "musicName": "f", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "75", "xValue": "70" }, { "level": "♭", "musicName": "f", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "76", "xValue": "70" }, { "level": "", "musicName": "f", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "77", "xValue": "70" }, { "level": "♯", "musicName": "f", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "78", "xValue": "70" }, { "level": "×", "musicName": "f", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "79", "xValue": "70" }, { "level": "♭♭", "musicName": "g", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "77", "xValue": "71" }, { "level": "♭", "musicName": "g", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "78", "xValue": "71" }, { "level": "", "musicName": "g", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "79", "xValue": "71" }, { "level": "♯", "musicName": "g", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "80", "xValue": "71" }, { "level": "×", "musicName": "g", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "81", "xValue": "71" }, { "level": "♭♭", "musicName": "a", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "79", "xValue": "72" }, { "level": "♭", "musicName": "a", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "80", "xValue": "72" }, { "level": "", "musicName": "a", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "81", "xValue": "72" }, { "level": "♯", "musicName": "a", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "82", "xValue": "72" }, { "level": "×", "musicName": "a", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "83", "xValue": "72" }, { "level": "♭♭", "musicName": "b", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "81", "xValue": "73" }, { "level": "♭", "musicName": "b", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "82", "xValue": "73" }, { "level": "", "musicName": "b", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "83", "xValue": "73" }, { "level": "♯", "musicName": "b", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "84", "xValue": "73" }, { "level": "×", "musicName": "b", "groupLevel": "2", "groupLevelName": "小字二组", "yValue": "85", "xValue": "73" }, { "level": "♭♭", "musicName": "c", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "82", "xValue": "74" }, { "level": "♭", "musicName": "c", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "83", "xValue": "74" }, { "level": "", "musicName": "c", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "84", "xValue": "74" }, { "level": "♯", "musicName": "c", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "85", "xValue": "74" }, { "level": "×", "musicName": "c", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "86", "xValue": "74" }, { "level": "♭♭", "musicName": "d", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "84", "xValue": "75" }, { "level": "♭", "musicName": "d", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "85", "xValue": "75" }, { "level": "", "musicName": "d", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "86", "xValue": "75" }, { "level": "♯", "musicName": "d", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "87", "xValue": "75" }, { "level": "×", "musicName": "d", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "88", "xValue": "75" }, { "level": "♭♭", "musicName": "e", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "86", "xValue": "76" }, { "level": "♭", "musicName": "e", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "87", "xValue": "76" }, { "level": "", "musicName": "e", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "88", "xValue": "76" }, { "level": "♯", "musicName": "e", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "89", "xValue": "76" }, { "level": "×", "musicName": "e", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "90", "xValue": "76" }, { "level": "♭♭", "musicName": "f", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "87", "xValue": "77" }, { "level": "♭", "musicName": "f", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "88", "xValue": "77" }, { "level": "", "musicName": "f", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "89", "xValue": "77" }, { "level": "♯", "musicName": "f", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "90", "xValue": "77" }, { "level": "×", "musicName": "f", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "91", "xValue": "77" }, { "level": "♭♭", "musicName": "g", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "89", "xValue": "78" }, { "level": "♭", "musicName": "g", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "90", "xValue": "78" }, { "level": "", "musicName": "g", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "91", "xValue": "78" }, { "level": "♯", "musicName": "g", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "92", "xValue": "78" }, { "level": "×", "musicName": "g", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "93", "xValue": "78" }, { "level": "♭♭", "musicName": "a", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "91", "xValue": "79" }, { "level": "♭", "musicName": "a", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "92", "xValue": "79" }, { "level": "", "musicName": "a", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "93", "xValue": "79" }, { "level": "♯", "musicName": "a", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "94", "xValue": "79" }, { "level": "×", "musicName": "a", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "95", "xValue": "79" }, { "level": "♭♭", "musicName": "b", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "93", "xValue": "80" }, { "level": "♭", "musicName": "b", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "94", "xValue": "80" }, { "level": "", "musicName": "b", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "95", "xValue": "80" }, { "level": "♯", "musicName": "b", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "96", "xValue": "80" }, { "level": "×", "musicName": "b", "groupLevel": "3", "groupLevelName": "小字三组", "yValue": "97", "xValue": "80" }, { "level": "♭♭", "musicName": "c", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "94", "xValue": "81" }, { "level": "♭", "musicName": "c", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "95", "xValue": "81" }, { "level": "", "musicName": "c", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "96", "xValue": "81" }, { "level": "♯", "musicName": "c", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "97", "xValue": "81" }, { "level": "×", "musicName": "c", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "98", "xValue": "81" }, { "level": "♭♭", "musicName": "d", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "96", "xValue": "82" }, { "level": "♭", "musicName": "d", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "97", "xValue": "82" }, { "level": "", "musicName": "d", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "98", "xValue": "82" }, { "level": "♯", "musicName": "d", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "99", "xValue": "82" }, { "level": "×", "musicName": "d", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "100", "xValue": "82" }, { "level": "♭♭", "musicName": "e", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "98", "xValue": "83" }, { "level": "♭", "musicName": "e", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "99", "xValue": "83" }, { "level": "", "musicName": "e", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "100", "xValue": "83" }, { "level": "♯", "musicName": "e", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "101", "xValue": "83" }, { "level": "×", "musicName": "e", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "102", "xValue": "83" }, { "level": "♭♭", "musicName": "f", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "99", "xValue": "84" }, { "level": "♭", "musicName": "f", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "100", "xValue": "84" }, { "level": "", "musicName": "f", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "101", "xValue": "84" }, { "level": "♯", "musicName": "f", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "102", "xValue": "84" }, { "level": "×", "musicName": "f", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "103", "xValue": "84" }, { "level": "♭♭", "musicName": "g", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "101", "xValue": "85" }, { "level": "♭", "musicName": "g", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "102", "xValue": "85" }, { "level": "", "musicName": "g", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "103", "xValue": "85" }, { "level": "♯", "musicName": "g", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "104", "xValue": "85" }, { "level": "×", "musicName": "g", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "105", "xValue": "85" }, { "level": "♭♭", "musicName": "a", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "103", "xValue": "86" }, { "level": "♭", "musicName": "a", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "104", "xValue": "86" }, { "level": "", "musicName": "a", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "105", "xValue": "86" }, { "level": "♯", "musicName": "a", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "106", "xValue": "86" }, { "level": "×", "musicName": "a", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "107", "xValue": "86" }, { "level": "♭♭", "musicName": "b", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "105", "xValue": "87" }, { "level": "♭", "musicName": "b", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "106", "xValue": "87" }, { "level": "", "musicName": "b", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "107", "xValue": "87" }, { "level": "♯", "musicName": "b", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "108", "xValue": "87" }, { "level": "×", "musicName": "b", "groupLevel": "4", "groupLevelName": "小字四组", "yValue": "109", "xValue": "87" }, { "level": "♭♭", "musicName": "c", "groupLevel": "5", "groupLevelName": "小字五组", "yValue": "106", "xValue": "88" }, { "level": "♭", "musicName": "c", "groupLevel": "5", "groupLevelName": "小字五组", "yValue": "107", "xValue": "88" }, { "level": "", "musicName": "c", "groupLevel": "5", "groupLevelName": "小字五组", "yValue": "108", "xValue": "88" }, { "level": "♯", "musicName": "c", "groupLevel": "5", "groupLevelName": "小字五组", "yValue": "109", "xValue": "88" }, { "level": "×", "musicName": "c", "groupLevel": "5", "groupLevelName": "小字五组", "yValue": "110", "xValue": "88" }];

/***/ }),
/* 7 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});
var data = exports.data = [{ "result": "纯1度", "xValue": "0", "yValue": "0" }, { "result": "纯4度", "xValue": "3", "yValue": "5" }, { "result": "纯5度", "xValue": "4", "yValue": "7" }, { "result": "纯8度", "xValue": "7", "yValue": "12" }, { "result": "小2度", "xValue": "1", "yValue": "1" }, { "result": "小3度", "xValue": "2", "yValue": "3" }, { "result": "小6度", "xValue": "5", "yValue": "8" }, { "result": "小7度", "xValue": "6", "yValue": "10" }, { "result": "大2度", "xValue": "1", "yValue": "2" }, { "result": "大3度", "xValue": "2", "yValue": "4" }, { "result": "大6度", "xValue": "5", "yValue": "9" }, { "result": "大7度", "xValue": "6", "yValue": "11" }, { "result": "减2度", "xValue": "1", "yValue": "0" }, { "result": "减3度", "xValue": "2", "yValue": "2" }, { "result": "减4度", "xValue": "3", "yValue": "4" }, { "result": "减5度", "xValue": "4", "yValue": "6" }, { "result": "减6度", "xValue": "5", "yValue": "7" }, { "result": "减7度", "xValue": "6", "yValue": "9" }, { "result": "减8度", "xValue": "7", "yValue": "11" }, { "result": "倍减3度", "xValue": "2", "yValue": "1" }, { "result": "倍减4度", "xValue": "3", "yValue": "3" }, { "result": "倍减5度", "xValue": "4", "yValue": "5" }, { "result": "倍减6度", "xValue": "5", "yValue": "6" }, { "result": "倍减7度", "xValue": "6", "yValue": "8" }, { "result": "倍减8度", "xValue": "7", "yValue": "10" }, { "result": "增1度", "xValue": "0", "yValue": "1" }, { "result": "增2度", "xValue": "1", "yValue": "3" }, { "result": "增3度", "xValue": "2", "yValue": "5" }, { "result": "增4度", "xValue": "3", "yValue": "6" }, { "result": "增5度", "xValue": "4", "yValue": "8" }, { "result": "增6度", "xValue": "5", "yValue": "10" }, { "result": "增7度", "xValue": "6", "yValue": "12" }, { "result": "增8度", "xValue": "7", "yValue": "13" }, { "result": "倍增1度", "xValue": "0", "yValue": "2" }, { "result": "倍增2度", "xValue": "1", "yValue": "4" }, { "result": "倍增3度", "xValue": "2", "yValue": "6" }, { "result": "倍增4度", "xValue": "3", "yValue": "7" }, { "result": "倍增5度", "xValue": "4", "yValue": "9" }, { "result": "倍增6度", "xValue": "5", "yValue": "11" }, { "result": "倍增7度", "xValue": "6", "yValue": "13" }, { "result": "倍增8度", "xValue": "7", "yValue": "14" }];

/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /*
                                                                                                                                                                                                                                                                                * Licensed to the Apache Software Foundation (ASF) under one
                                                                                                                                                                                                                                                                                * or more contributor license agreements.  See the NOTICE file
                                                                                                                                                                                                                                                                                * distributed with this work for additional information
                                                                                                                                                                                                                                                                                * regarding copyright ownership.  The ASF licenses this file
                                                                                                                                                                                                                                                                                * to you under the Apache License, Version 2.0 (the
                                                                                                                                                                                                                                                                                * "License"); you may not use this file except in compliance
                                                                                                                                                                                                                                                                                * with the License.  You may obtain a copy of the License at
                                                                                                                                                                                                                                                                                *
                                                                                                                                                                                                                                                                                *   http://www.apache.org/licenses/LICENSE-2.0
                                                                                                                                                                                                                                                                                *
                                                                                                                                                                                                                                                                                * Unless required by applicable law or agreed to in writing,
                                                                                                                                                                                                                                                                                * software distributed under the License is distributed on an
                                                                                                                                                                                                                                                                                * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
                                                                                                                                                                                                                                                                                * KIND, either express or implied.  See the License for the
                                                                                                                                                                                                                                                                                * specific language governing permissions and limitations
                                                                                                                                                                                                                                                                                * under the License.
                                                                                                                                                                                                                                                                                */

var _urlParse = __webpack_require__(87);

var _urlParse2 = _interopRequireDefault(_urlParse);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var Utils = {
  UrlParser: _urlParse2.default,
  _typeof: function _typeof(obj) {
    return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
  },
  isPlainObject: function isPlainObject(obj) {
    return Utils._typeof(obj) === 'object';
  },
  isString: function isString(obj) {
    return typeof obj === 'string';
  },
  isNonEmptyArray: function isNonEmptyArray() {
    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];

    return obj && obj.length > 0 && Array.isArray(obj) && typeof obj !== 'undefined';
  },
  isObject: function isObject(item) {
    return item && (typeof item === 'undefined' ? 'undefined' : _typeof2(item)) === 'object' && !Array.isArray(item);
  },
  isEmptyObject: function isEmptyObject(obj) {
    return Object.keys(obj).length === 0 && obj.constructor === Object;
  },
  decodeIconFont: function decodeIconFont(text) {
    // 正则匹配 图标和文字混排 eg: 我去上学校&#xe600;,天天不&#xe600;迟到
    var regExp = /&#x[a-z|0-9]{4,5};?/g;
    if (regExp.test(text)) {
      return text.replace(new RegExp(regExp, 'g'), function (iconText) {
        var replace = iconText.replace(/&#x/, '0x').replace(/;$/, '');
        return String.fromCharCode(replace);
      });
    } else {
      return text;
    }
  },
  mergeDeep: function mergeDeep(target) {
    for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
      sources[_key - 1] = arguments[_key];
    }

    if (!sources.length) return target;
    var source = sources.shift();
    if (Utils.isObject(target) && Utils.isObject(source)) {
      for (var key in source) {
        if (Utils.isObject(source[key])) {
          if (!target[key]) {
            Object.assign(target, _defineProperty({}, key, {}));
          }
          Utils.mergeDeep(target[key], source[key]);
        } else {
          Object.assign(target, _defineProperty({}, key, source[key]));
        }
      }
    }
    return Utils.mergeDeep.apply(Utils, [target].concat(sources));
  },
  appendProtocol: function appendProtocol(url) {
    if (/^\/\//.test(url)) {
      var bundleUrl = weex.config.bundleUrl;

      return 'http' + (/^https:/.test(bundleUrl) ? 's' : '') + ':' + url;
    }
    return url;
  },
  encodeURLParams: function encodeURLParams(url) {
    var parsedUrl = new _urlParse2.default(url, true);
    return parsedUrl.toString();
  },
  goToH5Page: function goToH5Page(jumpUrl) {
    var animated = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
    var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;

    var Navigator = weex.requireModule('navigator');
    var jumpUrlObj = new Utils.UrlParser(jumpUrl, true);
    var url = Utils.appendProtocol(jumpUrlObj.toString());
    Navigator.push({
      url: Utils.encodeURLParams(url),
      animated: animated.toString()
    }, callback);
  },

  env: {
    isTaobao: function isTaobao() {
      var appName = weex.config.env.appName;

      return (/(tb|taobao|淘宝)/i.test(appName)
      );
    },
    isTrip: function isTrip() {
      var appName = weex.config.env.appName;

      return appName === 'LX';
    },
    isBoat: function isBoat() {
      var appName = weex.config.env.appName;

      return appName === 'Boat' || appName === 'BoatPlayground';
    },
    isWeb: function isWeb() {
      var platform = weex.config.env.platform;

      return (typeof window === 'undefined' ? 'undefined' : _typeof2(window)) === 'object' && platform.toLowerCase() === 'web';
    },
    isIOS: function isIOS() {
      var platform = weex.config.env.platform;

      return platform.toLowerCase() === 'ios';
    },

    /**
     * 是否为 iPhone X or iPhoneXS or iPhoneXR or iPhoneXS Max
     * @returns {boolean}
     */
    isIPhoneX: function isIPhoneX() {
      var deviceHeight = weex.config.env.deviceHeight;

      if (Utils.env.isWeb()) {
        return (typeof window === 'undefined' ? 'undefined' : _typeof2(window)) !== undefined && window.screen && window.screen.width && window.screen.height && (parseInt(window.screen.width, 10) === 375 && parseInt(window.screen.height, 10) === 812 || parseInt(window.screen.width, 10) === 414 && parseInt(window.screen.height, 10) === 896);
      }
      return Utils.env.isIOS() && (deviceHeight === 2436 || deviceHeight === 2688 || deviceHeight === 1792 || deviceHeight === 1624);
    },
    isAndroid: function isAndroid() {
      var platform = weex.config.env.platform;

      return platform.toLowerCase() === 'android';
    },
    isTmall: function isTmall() {
      var appName = weex.config.env.appName;

      return (/(tm|tmall|天猫)/i.test(appName)
      );
    },
    isAliWeex: function isAliWeex() {
      return Utils.env.isTmall() || Utils.env.isTrip() || Utils.env.isTaobao();
    },

    /**
     * 获取weex屏幕真实的设置高度，需要减去导航栏高度
     * @returns {Number}
     */
    getPageHeight: function getPageHeight() {
      var env = weex.config.env;

      var navHeight = Utils.env.isWeb() ? 0 : Utils.env.isIPhoneX() ? 176 : 132;
      return env.deviceHeight / env.deviceWidth * 750 - navHeight;
    },

    /**
     * 获取weex屏幕真实的设置高度
     * @returns {Number}
     */
    getScreenHeight: function getScreenHeight() {
      var env = weex.config.env;

      return env.deviceHeight / env.deviceWidth * 750;
    }
  },

  /**
   * 版本号比较
   * @memberOf Utils
   * @param currVer {string}
   * @param promoteVer {string}
   * @returns {boolean}
   * @example
   *
   * const { Utils } = require('@ali/wx-bridge');
   * const { compareVersion } = Utils;
   * console.log(compareVersion('0.1.100', '0.1.11')); // 'true'
   */
  compareVersion: function compareVersion() {
    var currVer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '0.0.0';
    var promoteVer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0.0.0';

    if (currVer === promoteVer) return true;
    var currVerArr = currVer.split('.');
    var promoteVerArr = promoteVer.split('.');
    var len = Math.max(currVerArr.length, promoteVerArr.length);
    for (var i = 0; i < len; i++) {
      var proVal = ~~promoteVerArr[i];
      var curVal = ~~currVerArr[i];
      if (proVal < curVal) {
        return true;
      } else if (proVal > curVal) {
        return false;
      }
    }
    return false;
  },

  /**
   * 分割数组
   * @param arr 被分割数组
   * @param size 分割数组的长度
   * @returns {Array}
   */
  arrayChunk: function arrayChunk() {
    var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
    var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4;

    var groups = [];
    if (arr && arr.length > 0) {
      groups = arr.map(function (e, i) {
        return i % size === 0 ? arr.slice(i, i + size) : null;
      }).filter(function (e) {
        return e;
      });
    }
    return groups;
  },

  /*
   * 截断字符串
   * @param str 传入字符串
   * @param len 截断长度
   * @param hasDot 末尾是否...
   * @returns {String}
   */
  truncateString: function truncateString(str, len) {
    var hasDot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;

    var newLength = 0;
    var newStr = '';
    var singleChar = '';
    var chineseRegex = /[^\x00-\xff]/g;
    var strLength = str.replace(chineseRegex, '**').length;
    for (var i = 0; i < strLength; i++) {
      singleChar = str.charAt(i).toString();
      if (singleChar.match(chineseRegex) !== null) {
        newLength += 2;
      } else {
        newLength++;
      }
      if (newLength > len) {
        break;
      }
      newStr += singleChar;
    }

    if (hasDot && strLength > len) {
      newStr += '...';
    }
    return newStr;
  },

  /*
   * 转换 obj 为 url params参数
   * @param obj 传入字符串
   * @returns {String}
   */
  objToParams: function objToParams(obj) {
    var str = '';
    for (var key in obj) {
      if (str !== '') {
        str += '&';
      }
      str += key + '=' + encodeURIComponent(obj[key]);
    }
    return str;
  },

  /*
   * 转换 url params参数为obj
   * @param str 传入url参数字符串
   * @returns {Object}
   */
  paramsToObj: function paramsToObj(str) {
    var obj = {};
    try {
      obj = JSON.parse('{"' + decodeURI(str).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g, '":"') + '"}');
    } catch (e) {
      console.log(e);
    }
    return obj;
  },

  animation: {
    /**
     * 返回定义页面转场动画起初的位置
     * @param ref
     * @param transform 运动类型
     * @param status
     * @param callback 回调函数
     */
    pageTransitionAnimation: function pageTransitionAnimation(ref, transform, status, callback) {
      var animation = weex.requireModule('animation');
      animation.transition(ref, {
        styles: {
          transform: transform
        },
        duration: status ? 250 : 300, // ms
        timingFunction: status ? 'ease-in' : 'ease-out',
        delay: 0 // ms
      }, function () {
        callback && callback();
      });
    }
  },
  uiStyle: {
    /**
     * 返回定义页面转场动画起初的位置
     * @param animationType 页面转场动画的类型 push，model
     * @param size 分割数组的长度
     * @returns {}
     */
    pageTransitionAnimationStyle: function pageTransitionAnimationStyle(animationType) {
      if (animationType === 'push') {
        return {
          left: '750px',
          top: '0px',
          height: weex.config.env.deviceHeight / weex.config.env.deviceWidth * 750 + 'px'
        };
      } else if (animationType === 'model') {
        return {
          top: weex.config.env.deviceHeight / weex.config.env.deviceWidth * 750 + 'px',
          left: '0px',
          height: weex.config.env.deviceHeight / weex.config.env.deviceWidth * 750 + 'px'
        };
      }
      return {};
    }
  }
};

exports.default = Utils;

/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


/*global Vue*/

/* weex initialized here, please do not move this line */
var _require = __webpack_require__(10),
    router = _require.router;

var App = __webpack_require__(130);
/* eslint-disable no-new */
new Vue(Vue.util.extend({ el: '#root', router: router }, App));
router.push('/');

/***/ }),
/* 10 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.router = undefined;

var _vueRouter = __webpack_require__(11);

var _vueRouter2 = _interopRequireDefault(_vueRouter);

var _functionModule = __webpack_require__(12);

var _functionModule2 = _interopRequireDefault(_functionModule);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/*global Vue*/
Vue.use(_vueRouter2.default);

var originalPush = _vueRouter2.default.prototype.push;
_vueRouter2.default.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(function (err) {
    return err;
  });
};
var router = exports.router = new _vueRouter2.default({
  routes: [{
    path: '/',
    name: 'FunctionModule',
    component: _functionModule2.default
  }]
});

/***/ }),
/* 11 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
/*!
  * vue-router v3.4.3
  * (c) 2020 Evan You
  * @license MIT
  */
/*  */

function assert (condition, message) {
  if (!condition) {
    throw new Error(("[vue-router] " + message))
  }
}

function warn (condition, message) {
  if ("development" !== 'production' && !condition) {
    typeof console !== 'undefined' && console.warn(("[vue-router] " + message));
  }
}

function extend (a, b) {
  for (var key in b) {
    a[key] = b[key];
  }
  return a
}

var View = {
  name: 'RouterView',
  functional: true,
  props: {
    name: {
      type: String,
      default: 'default'
    }
  },
  render: function render (_, ref) {
    var props = ref.props;
    var children = ref.children;
    var parent = ref.parent;
    var data = ref.data;

    // used by devtools to display a router-view badge
    data.routerView = true;

    // directly use parent context's createElement() function
    // so that components rendered by router-view can resolve named slots
    var h = parent.$createElement;
    var name = props.name;
    var route = parent.$route;
    var cache = parent._routerViewCache || (parent._routerViewCache = {});

    // determine current view depth, also check to see if the tree
    // has been toggled inactive but kept-alive.
    var depth = 0;
    var inactive = false;
    while (parent && parent._routerRoot !== parent) {
      var vnodeData = parent.$vnode ? parent.$vnode.data : {};
      if (vnodeData.routerView) {
        depth++;
      }
      if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {
        inactive = true;
      }
      parent = parent.$parent;
    }
    data.routerViewDepth = depth;

    // render previous view if the tree is inactive and kept-alive
    if (inactive) {
      var cachedData = cache[name];
      var cachedComponent = cachedData && cachedData.component;
      if (cachedComponent) {
        // #2301
        // pass props
        if (cachedData.configProps) {
          fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);
        }
        return h(cachedComponent, data, children)
      } else {
        // render previous empty view
        return h()
      }
    }

    var matched = route.matched[depth];
    var component = matched && matched.components[name];

    // render empty node if no matched route or no config component
    if (!matched || !component) {
      cache[name] = null;
      return h()
    }

    // cache component
    cache[name] = { component: component };

    // attach instance registration hook
    // this will be called in the instance's injected lifecycle hooks
    data.registerRouteInstance = function (vm, val) {
      // val could be undefined for unregistration
      var current = matched.instances[name];
      if (
        (val && current !== vm) ||
        (!val && current === vm)
      ) {
        matched.instances[name] = val;
      }
    }

    // also register instance in prepatch hook
    // in case the same component instance is reused across different routes
    ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {
      matched.instances[name] = vnode.componentInstance;
    };

    // register instance in init hook
    // in case kept-alive component be actived when routes changed
    data.hook.init = function (vnode) {
      if (vnode.data.keepAlive &&
        vnode.componentInstance &&
        vnode.componentInstance !== matched.instances[name]
      ) {
        matched.instances[name] = vnode.componentInstance;
      }
    };

    var configProps = matched.props && matched.props[name];
    // save route and configProps in cache
    if (configProps) {
      extend(cache[name], {
        route: route,
        configProps: configProps
      });
      fillPropsinData(component, data, route, configProps);
    }

    return h(component, data, children)
  }
};

function fillPropsinData (component, data, route, configProps) {
  // resolve props
  var propsToPass = data.props = resolveProps(route, configProps);
  if (propsToPass) {
    // clone to prevent mutation
    propsToPass = data.props = extend({}, propsToPass);
    // pass non-declared props as attrs
    var attrs = data.attrs = data.attrs || {};
    for (var key in propsToPass) {
      if (!component.props || !(key in component.props)) {
        attrs[key] = propsToPass[key];
        delete propsToPass[key];
      }
    }
  }
}

function resolveProps (route, config) {
  switch (typeof config) {
    case 'undefined':
      return
    case 'object':
      return config
    case 'function':
      return config(route)
    case 'boolean':
      return config ? route.params : undefined
    default:
      if (true) {
        warn(
          false,
          "props in \"" + (route.path) + "\" is a " + (typeof config) + ", " +
          "expecting an object, function or boolean."
        );
      }
  }
}

/*  */

var encodeReserveRE = /[!'()*]/g;
var encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };
var commaRE = /%2C/g;

// fixed encodeURIComponent which is more conformant to RFC3986:
// - escapes [!'()*]
// - preserve commas
var encode = function (str) { return encodeURIComponent(str)
    .replace(encodeReserveRE, encodeReserveReplacer)
    .replace(commaRE, ','); };

var decode = decodeURIComponent;

function resolveQuery (
  query,
  extraQuery,
  _parseQuery
) {
  if ( extraQuery === void 0 ) extraQuery = {};

  var parse = _parseQuery || parseQuery;
  var parsedQuery;
  try {
    parsedQuery = parse(query || '');
  } catch (e) {
    "development" !== 'production' && warn(false, e.message);
    parsedQuery = {};
  }
  for (var key in extraQuery) {
    var value = extraQuery[key];
    parsedQuery[key] = Array.isArray(value)
      ? value.map(castQueryParamValue)
      : castQueryParamValue(value);
  }
  return parsedQuery
}

var castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };

function parseQuery (query) {
  var res = {};

  query = query.trim().replace(/^(\?|#|&)/, '');

  if (!query) {
    return res
  }

  query.split('&').forEach(function (param) {
    var parts = param.replace(/\+/g, ' ').split('=');
    var key = decode(parts.shift());
    var val = parts.length > 0 ? decode(parts.join('=')) : null;

    if (res[key] === undefined) {
      res[key] = val;
    } else if (Array.isArray(res[key])) {
      res[key].push(val);
    } else {
      res[key] = [res[key], val];
    }
  });

  return res
}

function stringifyQuery (obj) {
  var res = obj
    ? Object.keys(obj)
      .map(function (key) {
        var val = obj[key];

        if (val === undefined) {
          return ''
        }

        if (val === null) {
          return encode(key)
        }

        if (Array.isArray(val)) {
          var result = [];
          val.forEach(function (val2) {
            if (val2 === undefined) {
              return
            }
            if (val2 === null) {
              result.push(encode(key));
            } else {
              result.push(encode(key) + '=' + encode(val2));
            }
          });
          return result.join('&')
        }

        return encode(key) + '=' + encode(val)
      })
      .filter(function (x) { return x.length > 0; })
      .join('&')
    : null;
  return res ? ("?" + res) : ''
}

/*  */

var trailingSlashRE = /\/?$/;

function createRoute (
  record,
  location,
  redirectedFrom,
  router
) {
  var stringifyQuery = router && router.options.stringifyQuery;

  var query = location.query || {};
  try {
    query = clone(query);
  } catch (e) {}

  var route = {
    name: location.name || (record && record.name),
    meta: (record && record.meta) || {},
    path: location.path || '/',
    hash: location.hash || '',
    query: query,
    params: location.params || {},
    fullPath: getFullPath(location, stringifyQuery),
    matched: record ? formatMatch(record) : []
  };
  if (redirectedFrom) {
    route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);
  }
  return Object.freeze(route)
}

function clone (value) {
  if (Array.isArray(value)) {
    return value.map(clone)
  } else if (value && typeof value === 'object') {
    var res = {};
    for (var key in value) {
      res[key] = clone(value[key]);
    }
    return res
  } else {
    return value
  }
}

// the starting route that represents the initial state
var START = createRoute(null, {
  path: '/'
});

function formatMatch (record) {
  var res = [];
  while (record) {
    res.unshift(record);
    record = record.parent;
  }
  return res
}

function getFullPath (
  ref,
  _stringifyQuery
) {
  var path = ref.path;
  var query = ref.query; if ( query === void 0 ) query = {};
  var hash = ref.hash; if ( hash === void 0 ) hash = '';

  var stringify = _stringifyQuery || stringifyQuery;
  return (path || '/') + stringify(query) + hash
}

function isSameRoute (a, b) {
  if (b === START) {
    return a === b
  } else if (!b) {
    return false
  } else if (a.path && b.path) {
    return (
      a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&
      a.hash === b.hash &&
      isObjectEqual(a.query, b.query)
    )
  } else if (a.name && b.name) {
    return (
      a.name === b.name &&
      a.hash === b.hash &&
      isObjectEqual(a.query, b.query) &&
      isObjectEqual(a.params, b.params)
    )
  } else {
    return false
  }
}

function isObjectEqual (a, b) {
  if ( a === void 0 ) a = {};
  if ( b === void 0 ) b = {};

  // handle null value #1566
  if (!a || !b) { return a === b }
  var aKeys = Object.keys(a);
  var bKeys = Object.keys(b);
  if (aKeys.length !== bKeys.length) {
    return false
  }
  return aKeys.every(function (key) {
    var aVal = a[key];
    var bVal = b[key];
    // query values can be null and undefined
    if (aVal == null || bVal == null) { return aVal === bVal }
    // check nested equality
    if (typeof aVal === 'object' && typeof bVal === 'object') {
      return isObjectEqual(aVal, bVal)
    }
    return String(aVal) === String(bVal)
  })
}

function isIncludedRoute (current, target) {
  return (
    current.path.replace(trailingSlashRE, '/').indexOf(
      target.path.replace(trailingSlashRE, '/')
    ) === 0 &&
    (!target.hash || current.hash === target.hash) &&
    queryIncludes(current.query, target.query)
  )
}

function queryIncludes (current, target) {
  for (var key in target) {
    if (!(key in current)) {
      return false
    }
  }
  return true
}

/*  */

function resolvePath (
  relative,
  base,
  append
) {
  var firstChar = relative.charAt(0);
  if (firstChar === '/') {
    return relative
  }

  if (firstChar === '?' || firstChar === '#') {
    return base + relative
  }

  var stack = base.split('/');

  // remove trailing segment if:
  // - not appending
  // - appending to trailing slash (last segment is empty)
  if (!append || !stack[stack.length - 1]) {
    stack.pop();
  }

  // resolve relative path
  var segments = relative.replace(/^\//, '').split('/');
  for (var i = 0; i < segments.length; i++) {
    var segment = segments[i];
    if (segment === '..') {
      stack.pop();
    } else if (segment !== '.') {
      stack.push(segment);
    }
  }

  // ensure leading slash
  if (stack[0] !== '') {
    stack.unshift('');
  }

  return stack.join('/')
}

function parsePath (path) {
  var hash = '';
  var query = '';

  var hashIndex = path.indexOf('#');
  if (hashIndex >= 0) {
    hash = path.slice(hashIndex);
    path = path.slice(0, hashIndex);
  }

  var queryIndex = path.indexOf('?');
  if (queryIndex >= 0) {
    query = path.slice(queryIndex + 1);
    path = path.slice(0, queryIndex);
  }

  return {
    path: path,
    query: query,
    hash: hash
  }
}

function cleanPath (path) {
  return path.replace(/\/\//g, '/')
}

var isarray = Array.isArray || function (arr) {
  return Object.prototype.toString.call(arr) == '[object Array]';
};

/**
 * Expose `pathToRegexp`.
 */
var pathToRegexp_1 = pathToRegexp;
var parse_1 = parse;
var compile_1 = compile;
var tokensToFunction_1 = tokensToFunction;
var tokensToRegExp_1 = tokensToRegExp;

/**
 * The main path matching regexp utility.
 *
 * @type {RegExp}
 */
var PATH_REGEXP = new RegExp([
  // Match escaped characters that would otherwise appear in future matches.
  // This allows the user to escape special characters that won't transform.
  '(\\\\.)',
  // Match Express-style parameters and un-named parameters with a prefix
  // and optional suffixes. Matches appear as:
  //
  // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined]
  // "/route(\\d+)"  => [undefined, undefined, undefined, "\d+", undefined, undefined]
  // "/*"            => ["/", undefined, undefined, undefined, undefined, "*"]
  '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))'
].join('|'), 'g');

/**
 * Parse a string for the raw tokens.
 *
 * @param  {string}  str
 * @param  {Object=} options
 * @return {!Array}
 */
function parse (str, options) {
  var tokens = [];
  var key = 0;
  var index = 0;
  var path = '';
  var defaultDelimiter = options && options.delimiter || '/';
  var res;

  while ((res = PATH_REGEXP.exec(str)) != null) {
    var m = res[0];
    var escaped = res[1];
    var offset = res.index;
    path += str.slice(index, offset);
    index = offset + m.length;

    // Ignore already escaped sequences.
    if (escaped) {
      path += escaped[1];
      continue
    }

    var next = str[index];
    var prefix = res[2];
    var name = res[3];
    var capture = res[4];
    var group = res[5];
    var modifier = res[6];
    var asterisk = res[7];

    // Push the current path onto the tokens.
    if (path) {
      tokens.push(path);
      path = '';
    }

    var partial = prefix != null && next != null && next !== prefix;
    var repeat = modifier === '+' || modifier === '*';
    var optional = modifier === '?' || modifier === '*';
    var delimiter = res[2] || defaultDelimiter;
    var pattern = capture || group;

    tokens.push({
      name: name || key++,
      prefix: prefix || '',
      delimiter: delimiter,
      optional: optional,
      repeat: repeat,
      partial: partial,
      asterisk: !!asterisk,
      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')
    });
  }

  // Match any characters still remaining.
  if (index < str.length) {
    path += str.substr(index);
  }

  // If the path exists, push it onto the end.
  if (path) {
    tokens.push(path);
  }

  return tokens
}

/**
 * Compile a string to a template function for the path.
 *
 * @param  {string}             str
 * @param  {Object=}            options
 * @return {!function(Object=, Object=)}
 */
function compile (str, options) {
  return tokensToFunction(parse(str, options), options)
}

/**
 * Prettier encoding of URI path segments.
 *
 * @param  {string}
 * @return {string}
 */
function encodeURIComponentPretty (str) {
  return encodeURI(str).replace(/[\/?#]/g, function (c) {
    return '%' + c.charCodeAt(0).toString(16).toUpperCase()
  })
}

/**
 * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.
 *
 * @param  {string}
 * @return {string}
 */
function encodeAsterisk (str) {
  return encodeURI(str).replace(/[?#]/g, function (c) {
    return '%' + c.charCodeAt(0).toString(16).toUpperCase()
  })
}

/**
 * Expose a method for transforming tokens into the path function.
 */
function tokensToFunction (tokens, options) {
  // Compile all the tokens into regexps.
  var matches = new Array(tokens.length);

  // Compile all the patterns before compilation.
  for (var i = 0; i < tokens.length; i++) {
    if (typeof tokens[i] === 'object') {
      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));
    }
  }

  return function (obj, opts) {
    var path = '';
    var data = obj || {};
    var options = opts || {};
    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;

    for (var i = 0; i < tokens.length; i++) {
      var token = tokens[i];

      if (typeof token === 'string') {
        path += token;

        continue
      }

      var value = data[token.name];
      var segment;

      if (value == null) {
        if (token.optional) {
          // Prepend partial segment prefixes.
          if (token.partial) {
            path += token.prefix;
          }

          continue
        } else {
          throw new TypeError('Expected "' + token.name + '" to be defined')
        }
      }

      if (isarray(value)) {
        if (!token.repeat) {
          throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`')
        }

        if (value.length === 0) {
          if (token.optional) {
            continue
          } else {
            throw new TypeError('Expected "' + token.name + '" to not be empty')
          }
        }

        for (var j = 0; j < value.length; j++) {
          segment = encode(value[j]);

          if (!matches[i].test(segment)) {
            throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`')
          }

          path += (j === 0 ? token.prefix : token.delimiter) + segment;
        }

        continue
      }

      segment = token.asterisk ? encodeAsterisk(value) : encode(value);

      if (!matches[i].test(segment)) {
        throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"')
      }

      path += token.prefix + segment;
    }

    return path
  }
}

/**
 * Escape a regular expression string.
 *
 * @param  {string} str
 * @return {string}
 */
function escapeString (str) {
  return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1')
}

/**
 * Escape the capturing group by escaping special characters and meaning.
 *
 * @param  {string} group
 * @return {string}
 */
function escapeGroup (group) {
  return group.replace(/([=!:$\/()])/g, '\\$1')
}

/**
 * Attach the keys as a property of the regexp.
 *
 * @param  {!RegExp} re
 * @param  {Array}   keys
 * @return {!RegExp}
 */
function attachKeys (re, keys) {
  re.keys = keys;
  return re
}

/**
 * Get the flags for a regexp from the options.
 *
 * @param  {Object} options
 * @return {string}
 */
function flags (options) {
  return options && options.sensitive ? '' : 'i'
}

/**
 * Pull out keys from a regexp.
 *
 * @param  {!RegExp} path
 * @param  {!Array}  keys
 * @return {!RegExp}
 */
function regexpToRegexp (path, keys) {
  // Use a negative lookahead to match only capturing groups.
  var groups = path.source.match(/\((?!\?)/g);

  if (groups) {
    for (var i = 0; i < groups.length; i++) {
      keys.push({
        name: i,
        prefix: null,
        delimiter: null,
        optional: false,
        repeat: false,
        partial: false,
        asterisk: false,
        pattern: null
      });
    }
  }

  return attachKeys(path, keys)
}

/**
 * Transform an array into a regexp.
 *
 * @param  {!Array}  path
 * @param  {Array}   keys
 * @param  {!Object} options
 * @return {!RegExp}
 */
function arrayToRegexp (path, keys, options) {
  var parts = [];

  for (var i = 0; i < path.length; i++) {
    parts.push(pathToRegexp(path[i], keys, options).source);
  }

  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));

  return attachKeys(regexp, keys)
}

/**
 * Create a path regexp from string input.
 *
 * @param  {string}  path
 * @param  {!Array}  keys
 * @param  {!Object} options
 * @return {!RegExp}
 */
function stringToRegexp (path, keys, options) {
  return tokensToRegExp(parse(path, options), keys, options)
}

/**
 * Expose a function for taking tokens and returning a RegExp.
 *
 * @param  {!Array}          tokens
 * @param  {(Array|Object)=} keys
 * @param  {Object=}         options
 * @return {!RegExp}
 */
function tokensToRegExp (tokens, keys, options) {
  if (!isarray(keys)) {
    options = /** @type {!Object} */ (keys || options);
    keys = [];
  }

  options = options || {};

  var strict = options.strict;
  var end = options.end !== false;
  var route = '';

  // Iterate over the tokens and create our regexp string.
  for (var i = 0; i < tokens.length; i++) {
    var token = tokens[i];

    if (typeof token === 'string') {
      route += escapeString(token);
    } else {
      var prefix = escapeString(token.prefix);
      var capture = '(?:' + token.pattern + ')';

      keys.push(token);

      if (token.repeat) {
        capture += '(?:' + prefix + capture + ')*';
      }

      if (token.optional) {
        if (!token.partial) {
          capture = '(?:' + prefix + '(' + capture + '))?';
        } else {
          capture = prefix + '(' + capture + ')?';
        }
      } else {
        capture = prefix + '(' + capture + ')';
      }

      route += capture;
    }
  }

  var delimiter = escapeString(options.delimiter || '/');
  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;

  // In non-strict mode we allow a slash at the end of match. If the path to
  // match already ends with a slash, we remove it for consistency. The slash
  // is valid at the end of a path match, not in the middle. This is important
  // in non-ending mode, where "/test/" shouldn't match "/test//route".
  if (!strict) {
    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';
  }

  if (end) {
    route += '$';
  } else {
    // In non-ending mode, we need the capturing groups to match as much as
    // possible by using a positive lookahead to the end or next path segment.
    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';
  }

  return attachKeys(new RegExp('^' + route, flags(options)), keys)
}

/**
 * Normalize the given path string, returning a regular expression.
 *
 * An empty array can be passed in for the keys, which will hold the
 * placeholder key descriptions. For example, using `/user/:id`, `keys` will
 * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
 *
 * @param  {(string|RegExp|Array)} path
 * @param  {(Array|Object)=}       keys
 * @param  {Object=}               options
 * @return {!RegExp}
 */
function pathToRegexp (path, keys, options) {
  if (!isarray(keys)) {
    options = /** @type {!Object} */ (keys || options);
    keys = [];
  }

  options = options || {};

  if (path instanceof RegExp) {
    return regexpToRegexp(path, /** @type {!Array} */ (keys))
  }

  if (isarray(path)) {
    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)
  }

  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)
}
pathToRegexp_1.parse = parse_1;
pathToRegexp_1.compile = compile_1;
pathToRegexp_1.tokensToFunction = tokensToFunction_1;
pathToRegexp_1.tokensToRegExp = tokensToRegExp_1;

/*  */

// $flow-disable-line
var regexpCompileCache = Object.create(null);

function fillParams (
  path,
  params,
  routeMsg
) {
  params = params || {};
  try {
    var filler =
      regexpCompileCache[path] ||
      (regexpCompileCache[path] = pathToRegexp_1.compile(path));

    // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}
    // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string
    if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }

    return filler(params, { pretty: true })
  } catch (e) {
    if (true) {
      // Fix #3072 no warn if `pathMatch` is string
      warn(typeof params.pathMatch === 'string', ("missing param for " + routeMsg + ": " + (e.message)));
    }
    return ''
  } finally {
    // delete the 0 if it was added
    delete params[0];
  }
}

/*  */

function normalizeLocation (
  raw,
  current,
  append,
  router
) {
  var next = typeof raw === 'string' ? { path: raw } : raw;
  // named target
  if (next._normalized) {
    return next
  } else if (next.name) {
    next = extend({}, raw);
    var params = next.params;
    if (params && typeof params === 'object') {
      next.params = extend({}, params);
    }
    return next
  }

  // relative params
  if (!next.path && next.params && current) {
    next = extend({}, next);
    next._normalized = true;
    var params$1 = extend(extend({}, current.params), next.params);
    if (current.name) {
      next.name = current.name;
      next.params = params$1;
    } else if (current.matched.length) {
      var rawPath = current.matched[current.matched.length - 1].path;
      next.path = fillParams(rawPath, params$1, ("path " + (current.path)));
    } else if (true) {
      warn(false, "relative params navigation requires a current route.");
    }
    return next
  }

  var parsedPath = parsePath(next.path || '');
  var basePath = (current && current.path) || '/';
  var path = parsedPath.path
    ? resolvePath(parsedPath.path, basePath, append || next.append)
    : basePath;

  var query = resolveQuery(
    parsedPath.query,
    next.query,
    router && router.options.parseQuery
  );

  var hash = next.hash || parsedPath.hash;
  if (hash && hash.charAt(0) !== '#') {
    hash = "#" + hash;
  }

  return {
    _normalized: true,
    path: path,
    query: query,
    hash: hash
  }
}

/*  */

// work around weird flow bug
var toTypes = [String, Object];
var eventTypes = [String, Array];

var noop = function () {};

var Link = {
  name: 'RouterLink',
  props: {
    to: {
      type: toTypes,
      required: true
    },
    tag: {
      type: String,
      default: 'a'
    },
    exact: Boolean,
    append: Boolean,
    replace: Boolean,
    activeClass: String,
    exactActiveClass: String,
    ariaCurrentValue: {
      type: String,
      default: 'page'
    },
    event: {
      type: eventTypes,
      default: 'click'
    }
  },
  render: function render (h) {
    var this$1 = this;

    var router = this.$router;
    var current = this.$route;
    var ref = router.resolve(
      this.to,
      current,
      this.append
    );
    var location = ref.location;
    var route = ref.route;
    var href = ref.href;

    var classes = {};
    var globalActiveClass = router.options.linkActiveClass;
    var globalExactActiveClass = router.options.linkExactActiveClass;
    // Support global empty active class
    var activeClassFallback =
      globalActiveClass == null ? 'router-link-active' : globalActiveClass;
    var exactActiveClassFallback =
      globalExactActiveClass == null
        ? 'router-link-exact-active'
        : globalExactActiveClass;
    var activeClass =
      this.activeClass == null ? activeClassFallback : this.activeClass;
    var exactActiveClass =
      this.exactActiveClass == null
        ? exactActiveClassFallback
        : this.exactActiveClass;

    var compareTarget = route.redirectedFrom
      ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)
      : route;

    classes[exactActiveClass] = isSameRoute(current, compareTarget);
    classes[activeClass] = this.exact
      ? classes[exactActiveClass]
      : isIncludedRoute(current, compareTarget);

    var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;

    var handler = function (e) {
      if (guardEvent(e)) {
        if (this$1.replace) {
          router.replace(location, noop);
        } else {
          router.push(location, noop);
        }
      }
    };

    var on = { click: guardEvent };
    if (Array.isArray(this.event)) {
      this.event.forEach(function (e) {
        on[e] = handler;
      });
    } else {
      on[this.event] = handler;
    }

    var data = { class: classes };

    var scopedSlot =
      !this.$scopedSlots.$hasNormal &&
      this.$scopedSlots.default &&
      this.$scopedSlots.default({
        href: href,
        route: route,
        navigate: handler,
        isActive: classes[activeClass],
        isExactActive: classes[exactActiveClass]
      });

    if (scopedSlot) {
      if (scopedSlot.length === 1) {
        return scopedSlot[0]
      } else if (scopedSlot.length > 1 || !scopedSlot.length) {
        if (true) {
          warn(
            false,
            ("RouterLink with to=\"" + (this.to) + "\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.")
          );
        }
        return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)
      }
    }

    if (this.tag === 'a') {
      data.on = on;
      data.attrs = { href: href, 'aria-current': ariaCurrentValue };
    } else {
      // find the first <a> child and apply listener and href
      var a = findAnchor(this.$slots.default);
      if (a) {
        // in case the <a> is a static node
        a.isStatic = false;
        var aData = (a.data = extend({}, a.data));
        aData.on = aData.on || {};
        // transform existing events in both objects into arrays so we can push later
        for (var event in aData.on) {
          var handler$1 = aData.on[event];
          if (event in on) {
            aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];
          }
        }
        // append new listeners for router-link
        for (var event$1 in on) {
          if (event$1 in aData.on) {
            // on[event] is always a function
            aData.on[event$1].push(on[event$1]);
          } else {
            aData.on[event$1] = handler;
          }
        }

        var aAttrs = (a.data.attrs = extend({}, a.data.attrs));
        aAttrs.href = href;
        aAttrs['aria-current'] = ariaCurrentValue;
      } else {
        // doesn't have <a> child, apply listener to self
        data.on = on;
      }
    }

    return h(this.tag, data, this.$slots.default)
  }
};

function guardEvent (e) {
  // don't redirect with control keys
  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }
  // don't redirect when preventDefault called
  if (e.defaultPrevented) { return }
  // don't redirect on right click
  if (e.button !== undefined && e.button !== 0) { return }
  // don't redirect if `target="_blank"`
  if (e.currentTarget && e.currentTarget.getAttribute) {
    var target = e.currentTarget.getAttribute('target');
    if (/\b_blank\b/i.test(target)) { return }
  }
  // this may be a Weex event which doesn't have this method
  if (e.preventDefault) {
    e.preventDefault();
  }
  return true
}

function findAnchor (children) {
  if (children) {
    var child;
    for (var i = 0; i < children.length; i++) {
      child = children[i];
      if (child.tag === 'a') {
        return child
      }
      if (child.children && (child = findAnchor(child.children))) {
        return child
      }
    }
  }
}

var _Vue;

function install (Vue) {
  if (install.installed && _Vue === Vue) { return }
  install.installed = true;

  _Vue = Vue;

  var isDef = function (v) { return v !== undefined; };

  var registerInstance = function (vm, callVal) {
    var i = vm.$options._parentVnode;
    if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {
      i(vm, callVal);
    }
  };

  Vue.mixin({
    beforeCreate: function beforeCreate () {
      if (isDef(this.$options.router)) {
        this._routerRoot = this;
        this._router = this.$options.router;
        this._router.init(this);
        Vue.util.defineReactive(this, '_route', this._router.history.current);
      } else {
        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;
      }
      registerInstance(this, this);
    },
    destroyed: function destroyed () {
      registerInstance(this);
    }
  });

  Object.defineProperty(Vue.prototype, '$router', {
    get: function get () { return this._routerRoot._router }
  });

  Object.defineProperty(Vue.prototype, '$route', {
    get: function get () { return this._routerRoot._route }
  });

  Vue.component('RouterView', View);
  Vue.component('RouterLink', Link);

  var strats = Vue.config.optionMergeStrategies;
  // use the same hook merging strategy for route hooks
  strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;
}

/*  */

var inBrowser = typeof window !== 'undefined';

/*  */

function createRouteMap (
  routes,
  oldPathList,
  oldPathMap,
  oldNameMap
) {
  // the path list is used to control path matching priority
  var pathList = oldPathList || [];
  // $flow-disable-line
  var pathMap = oldPathMap || Object.create(null);
  // $flow-disable-line
  var nameMap = oldNameMap || Object.create(null);

  routes.forEach(function (route) {
    addRouteRecord(pathList, pathMap, nameMap, route);
  });

  // ensure wildcard routes are always at the end
  for (var i = 0, l = pathList.length; i < l; i++) {
    if (pathList[i] === '*') {
      pathList.push(pathList.splice(i, 1)[0]);
      l--;
      i--;
    }
  }

  if (true) {
    // warn if routes do not include leading slashes
    var found = pathList
    // check for missing leading slash
      .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });

    if (found.length > 0) {
      var pathNames = found.map(function (path) { return ("- " + path); }).join('\n');
      warn(false, ("Non-nested routes must include a leading slash character. Fix the following routes: \n" + pathNames));
    }
  }

  return {
    pathList: pathList,
    pathMap: pathMap,
    nameMap: nameMap
  }
}

function addRouteRecord (
  pathList,
  pathMap,
  nameMap,
  route,
  parent,
  matchAs
) {
  var path = route.path;
  var name = route.name;
  if (true) {
    assert(path != null, "\"path\" is required in a route configuration.");
    assert(
      typeof route.component !== 'string',
      "route config \"component\" for path: " + (String(
        path || name
      )) + " cannot be a " + "string id. Use an actual component instead."
    );
  }

  var pathToRegexpOptions =
    route.pathToRegexpOptions || {};
  var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);

  if (typeof route.caseSensitive === 'boolean') {
    pathToRegexpOptions.sensitive = route.caseSensitive;
  }

  var record = {
    path: normalizedPath,
    regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),
    components: route.components || { default: route.component },
    instances: {},
    name: name,
    parent: parent,
    matchAs: matchAs,
    redirect: route.redirect,
    beforeEnter: route.beforeEnter,
    meta: route.meta || {},
    props:
      route.props == null
        ? {}
        : route.components
          ? route.props
          : { default: route.props }
  };

  if (route.children) {
    // Warn if route is named, does not redirect and has a default child route.
    // If users navigate to this route by name, the default child will
    // not be rendered (GH Issue #629)
    if (true) {
      if (
        route.name &&
        !route.redirect &&
        route.children.some(function (child) { return /^\/?$/.test(child.path); })
      ) {
        warn(
          false,
          "Named Route '" + (route.name) + "' has a default child route. " +
            "When navigating to this named route (:to=\"{name: '" + (route.name) + "'\"), " +
            "the default child route will not be rendered. Remove the name from " +
            "this route and use the name of the default child route for named " +
            "links instead."
        );
      }
    }
    route.children.forEach(function (child) {
      var childMatchAs = matchAs
        ? cleanPath((matchAs + "/" + (child.path)))
        : undefined;
      addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);
    });
  }

  if (!pathMap[record.path]) {
    pathList.push(record.path);
    pathMap[record.path] = record;
  }

  if (route.alias !== undefined) {
    var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];
    for (var i = 0; i < aliases.length; ++i) {
      var alias = aliases[i];
      if ("development" !== 'production' && alias === path) {
        warn(
          false,
          ("Found an alias with the same value as the path: \"" + path + "\". You have to remove that alias. It will be ignored in development.")
        );
        // skip in dev to make it work
        continue
      }

      var aliasRoute = {
        path: alias,
        children: route.children
      };
      addRouteRecord(
        pathList,
        pathMap,
        nameMap,
        aliasRoute,
        parent,
        record.path || '/' // matchAs
      );
    }
  }

  if (name) {
    if (!nameMap[name]) {
      nameMap[name] = record;
    } else if ("development" !== 'production' && !matchAs) {
      warn(
        false,
        "Duplicate named routes definition: " +
          "{ name: \"" + name + "\", path: \"" + (record.path) + "\" }"
      );
    }
  }
}

function compileRouteRegex (
  path,
  pathToRegexpOptions
) {
  var regex = pathToRegexp_1(path, [], pathToRegexpOptions);
  if (true) {
    var keys = Object.create(null);
    regex.keys.forEach(function (key) {
      warn(
        !keys[key.name],
        ("Duplicate param keys in route with path: \"" + path + "\"")
      );
      keys[key.name] = true;
    });
  }
  return regex
}

function normalizePath (
  path,
  parent,
  strict
) {
  if (!strict) { path = path.replace(/\/$/, ''); }
  if (path[0] === '/') { return path }
  if (parent == null) { return path }
  return cleanPath(((parent.path) + "/" + path))
}

/*  */



function createMatcher (
  routes,
  router
) {
  var ref = createRouteMap(routes);
  var pathList = ref.pathList;
  var pathMap = ref.pathMap;
  var nameMap = ref.nameMap;

  function addRoutes (routes) {
    createRouteMap(routes, pathList, pathMap, nameMap);
  }

  function match (
    raw,
    currentRoute,
    redirectedFrom
  ) {
    var location = normalizeLocation(raw, currentRoute, false, router);
    var name = location.name;

    if (name) {
      var record = nameMap[name];
      if (true) {
        warn(record, ("Route with name '" + name + "' does not exist"));
      }
      if (!record) { return _createRoute(null, location) }
      var paramNames = record.regex.keys
        .filter(function (key) { return !key.optional; })
        .map(function (key) { return key.name; });

      if (typeof location.params !== 'object') {
        location.params = {};
      }

      if (currentRoute && typeof currentRoute.params === 'object') {
        for (var key in currentRoute.params) {
          if (!(key in location.params) && paramNames.indexOf(key) > -1) {
            location.params[key] = currentRoute.params[key];
          }
        }
      }

      location.path = fillParams(record.path, location.params, ("named route \"" + name + "\""));
      return _createRoute(record, location, redirectedFrom)
    } else if (location.path) {
      location.params = {};
      for (var i = 0; i < pathList.length; i++) {
        var path = pathList[i];
        var record$1 = pathMap[path];
        if (matchRoute(record$1.regex, location.path, location.params)) {
          return _createRoute(record$1, location, redirectedFrom)
        }
      }
    }
    // no match
    return _createRoute(null, location)
  }

  function redirect (
    record,
    location
  ) {
    var originalRedirect = record.redirect;
    var redirect = typeof originalRedirect === 'function'
      ? originalRedirect(createRoute(record, location, null, router))
      : originalRedirect;

    if (typeof redirect === 'string') {
      redirect = { path: redirect };
    }

    if (!redirect || typeof redirect !== 'object') {
      if (true) {
        warn(
          false, ("invalid redirect option: " + (JSON.stringify(redirect)))
        );
      }
      return _createRoute(null, location)
    }

    var re = redirect;
    var name = re.name;
    var path = re.path;
    var query = location.query;
    var hash = location.hash;
    var params = location.params;
    query = re.hasOwnProperty('query') ? re.query : query;
    hash = re.hasOwnProperty('hash') ? re.hash : hash;
    params = re.hasOwnProperty('params') ? re.params : params;

    if (name) {
      // resolved named direct
      var targetRecord = nameMap[name];
      if (true) {
        assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found."));
      }
      return match({
        _normalized: true,
        name: name,
        query: query,
        hash: hash,
        params: params
      }, undefined, location)
    } else if (path) {
      // 1. resolve relative redirect
      var rawPath = resolveRecordPath(path, record);
      // 2. resolve params
      var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\""));
      // 3. rematch with existing query and hash
      return match({
        _normalized: true,
        path: resolvedPath,
        query: query,
        hash: hash
      }, undefined, location)
    } else {
      if (true) {
        warn(false, ("invalid redirect option: " + (JSON.stringify(redirect))));
      }
      return _createRoute(null, location)
    }
  }

  function alias (
    record,
    location,
    matchAs
  ) {
    var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\""));
    var aliasedMatch = match({
      _normalized: true,
      path: aliasedPath
    });
    if (aliasedMatch) {
      var matched = aliasedMatch.matched;
      var aliasedRecord = matched[matched.length - 1];
      location.params = aliasedMatch.params;
      return _createRoute(aliasedRecord, location)
    }
    return _createRoute(null, location)
  }

  function _createRoute (
    record,
    location,
    redirectedFrom
  ) {
    if (record && record.redirect) {
      return redirect(record, redirectedFrom || location)
    }
    if (record && record.matchAs) {
      return alias(record, location, record.matchAs)
    }
    return createRoute(record, location, redirectedFrom, router)
  }

  return {
    match: match,
    addRoutes: addRoutes
  }
}

function matchRoute (
  regex,
  path,
  params
) {
  var m = path.match(regex);

  if (!m) {
    return false
  } else if (!params) {
    return true
  }

  for (var i = 1, len = m.length; i < len; ++i) {
    var key = regex.keys[i - 1];
    var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i];
    if (key) {
      // Fix #1994: using * with props: true generates a param named 0
      params[key.name || 'pathMatch'] = val;
    }
  }

  return true
}

function resolveRecordPath (path, record) {
  return resolvePath(path, record.parent ? record.parent.path : '/', true)
}

/*  */

// use User Timing api (if present) for more accurate key precision
var Time =
  inBrowser && window.performance && window.performance.now
    ? window.performance
    : Date;

function genStateKey () {
  return Time.now().toFixed(3)
}

var _key = genStateKey();

function getStateKey () {
  return _key
}

function setStateKey (key) {
  return (_key = key)
}

/*  */

var positionStore = Object.create(null);

function setupScroll () {
  // Prevent browser scroll behavior on History popstate
  if ('scrollRestoration' in window.history) {
    window.history.scrollRestoration = 'manual';
  }
  // Fix for #1585 for Firefox
  // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678
  // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with
  // window.location.protocol + '//' + window.location.host
  // location.host contains the port and location.hostname doesn't
  var protocolAndPath = window.location.protocol + '//' + window.location.host;
  var absolutePath = window.location.href.replace(protocolAndPath, '');
  // preserve existing history state as it could be overriden by the user
  var stateCopy = extend({}, window.history.state);
  stateCopy.key = getStateKey();
  window.history.replaceState(stateCopy, '', absolutePath);
  window.addEventListener('popstate', handlePopState);
  return function () {
    window.removeEventListener('popstate', handlePopState);
  }
}

function handleScroll (
  router,
  to,
  from,
  isPop
) {
  if (!router.app) {
    return
  }

  var behavior = router.options.scrollBehavior;
  if (!behavior) {
    return
  }

  if (true) {
    assert(typeof behavior === 'function', "scrollBehavior must be a function");
  }

  // wait until re-render finishes before scrolling
  router.app.$nextTick(function () {
    var position = getScrollPosition();
    var shouldScroll = behavior.call(
      router,
      to,
      from,
      isPop ? position : null
    );

    if (!shouldScroll) {
      return
    }

    if (typeof shouldScroll.then === 'function') {
      shouldScroll
        .then(function (shouldScroll) {
          scrollToPosition((shouldScroll), position);
        })
        .catch(function (err) {
          if (true) {
            assert(false, err.toString());
          }
        });
    } else {
      scrollToPosition(shouldScroll, position);
    }
  });
}

function saveScrollPosition () {
  var key = getStateKey();
  if (key) {
    positionStore[key] = {
      x: window.pageXOffset,
      y: window.pageYOffset
    };
  }
}

function handlePopState (e) {
  saveScrollPosition();
  if (e.state && e.state.key) {
    setStateKey(e.state.key);
  }
}

function getScrollPosition () {
  var key = getStateKey();
  if (key) {
    return positionStore[key]
  }
}

function getElementPosition (el, offset) {
  var docEl = document.documentElement;
  var docRect = docEl.getBoundingClientRect();
  var elRect = el.getBoundingClientRect();
  return {
    x: elRect.left - docRect.left - offset.x,
    y: elRect.top - docRect.top - offset.y
  }
}

function isValidPosition (obj) {
  return isNumber(obj.x) || isNumber(obj.y)
}

function normalizePosition (obj) {
  return {
    x: isNumber(obj.x) ? obj.x : window.pageXOffset,
    y: isNumber(obj.y) ? obj.y : window.pageYOffset
  }
}

function normalizeOffset (obj) {
  return {
    x: isNumber(obj.x) ? obj.x : 0,
    y: isNumber(obj.y) ? obj.y : 0
  }
}

function isNumber (v) {
  return typeof v === 'number'
}

var hashStartsWithNumberRE = /^#\d/;

function scrollToPosition (shouldScroll, position) {
  var isObject = typeof shouldScroll === 'object';
  if (isObject && typeof shouldScroll.selector === 'string') {
    // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]
    // but at the same time, it doesn't make much sense to select an element with an id and an extra selector
    var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line
      ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line
      : document.querySelector(shouldScroll.selector);

    if (el) {
      var offset =
        shouldScroll.offset && typeof shouldScroll.offset === 'object'
          ? shouldScroll.offset
          : {};
      offset = normalizeOffset(offset);
      position = getElementPosition(el, offset);
    } else if (isValidPosition(shouldScroll)) {
      position = normalizePosition(shouldScroll);
    }
  } else if (isObject && isValidPosition(shouldScroll)) {
    position = normalizePosition(shouldScroll);
  }

  if (position) {
    window.scrollTo(position.x, position.y);
  }
}

/*  */

var supportsPushState =
  inBrowser &&
  (function () {
    var ua = window.navigator.userAgent;

    if (
      (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&
      ua.indexOf('Mobile Safari') !== -1 &&
      ua.indexOf('Chrome') === -1 &&
      ua.indexOf('Windows Phone') === -1
    ) {
      return false
    }

    return window.history && typeof window.history.pushState === 'function'
  })();

function pushState (url, replace) {
  saveScrollPosition();
  // try...catch the pushState call to get around Safari
  // DOM Exception 18 where it limits to 100 pushState calls
  var history = window.history;
  try {
    if (replace) {
      // preserve existing history state as it could be overriden by the user
      var stateCopy = extend({}, history.state);
      stateCopy.key = getStateKey();
      history.replaceState(stateCopy, '', url);
    } else {
      history.pushState({ key: setStateKey(genStateKey()) }, '', url);
    }
  } catch (e) {
    window.location[replace ? 'replace' : 'assign'](url);
  }
}

function replaceState (url) {
  pushState(url, true);
}

/*  */

function runQueue (queue, fn, cb) {
  var step = function (index) {
    if (index >= queue.length) {
      cb();
    } else {
      if (queue[index]) {
        fn(queue[index], function () {
          step(index + 1);
        });
      } else {
        step(index + 1);
      }
    }
  };
  step(0);
}

var NavigationFailureType = {
  redirected: 2,
  aborted: 4,
  cancelled: 8,
  duplicated: 16
};

function createNavigationRedirectedError (from, to) {
  return createRouterError(
    from,
    to,
    NavigationFailureType.redirected,
    ("Redirected when going from \"" + (from.fullPath) + "\" to \"" + (stringifyRoute(
      to
    )) + "\" via a navigation guard.")
  )
}

function createNavigationDuplicatedError (from, to) {
  var error = createRouterError(
    from,
    to,
    NavigationFailureType.duplicated,
    ("Avoided redundant navigation to current location: \"" + (from.fullPath) + "\".")
  );
  // backwards compatible with the first introduction of Errors
  error.name = 'NavigationDuplicated';
  return error
}

function createNavigationCancelledError (from, to) {
  return createRouterError(
    from,
    to,
    NavigationFailureType.cancelled,
    ("Navigation cancelled from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" with a new navigation.")
  )
}

function createNavigationAbortedError (from, to) {
  return createRouterError(
    from,
    to,
    NavigationFailureType.aborted,
    ("Navigation aborted from \"" + (from.fullPath) + "\" to \"" + (to.fullPath) + "\" via a navigation guard.")
  )
}

function createRouterError (from, to, type, message) {
  var error = new Error(message);
  error._isRouter = true;
  error.from = from;
  error.to = to;
  error.type = type;

  return error
}

var propertiesToLog = ['params', 'query', 'hash'];

function stringifyRoute (to) {
  if (typeof to === 'string') { return to }
  if ('path' in to) { return to.path }
  var location = {};
  propertiesToLog.forEach(function (key) {
    if (key in to) { location[key] = to[key]; }
  });
  return JSON.stringify(location, null, 2)
}

function isError (err) {
  return Object.prototype.toString.call(err).indexOf('Error') > -1
}

function isNavigationFailure (err, errorType) {
  return (
    isError(err) &&
    err._isRouter &&
    (errorType == null || err.type === errorType)
  )
}

/*  */

function resolveAsyncComponents (matched) {
  return function (to, from, next) {
    var hasAsync = false;
    var pending = 0;
    var error = null;

    flatMapComponents(matched, function (def, _, match, key) {
      // if it's a function and doesn't have cid attached,
      // assume it's an async component resolve function.
      // we are not using Vue's default async resolving mechanism because
      // we want to halt the navigation until the incoming component has been
      // resolved.
      if (typeof def === 'function' && def.cid === undefined) {
        hasAsync = true;
        pending++;

        var resolve = once(function (resolvedDef) {
          if (isESModule(resolvedDef)) {
            resolvedDef = resolvedDef.default;
          }
          // save resolved on async factory in case it's used elsewhere
          def.resolved = typeof resolvedDef === 'function'
            ? resolvedDef
            : _Vue.extend(resolvedDef);
          match.components[key] = resolvedDef;
          pending--;
          if (pending <= 0) {
            next();
          }
        });

        var reject = once(function (reason) {
          var msg = "Failed to resolve async component " + key + ": " + reason;
          "development" !== 'production' && warn(false, msg);
          if (!error) {
            error = isError(reason)
              ? reason
              : new Error(msg);
            next(error);
          }
        });

        var res;
        try {
          res = def(resolve, reject);
        } catch (e) {
          reject(e);
        }
        if (res) {
          if (typeof res.then === 'function') {
            res.then(resolve, reject);
          } else {
            // new syntax in Vue 2.3
            var comp = res.component;
            if (comp && typeof comp.then === 'function') {
              comp.then(resolve, reject);
            }
          }
        }
      }
    });

    if (!hasAsync) { next(); }
  }
}

function flatMapComponents (
  matched,
  fn
) {
  return flatten(matched.map(function (m) {
    return Object.keys(m.components).map(function (key) { return fn(
      m.components[key],
      m.instances[key],
      m, key
    ); })
  }))
}

function flatten (arr) {
  return Array.prototype.concat.apply([], arr)
}

var hasSymbol =
  typeof Symbol === 'function' &&
  typeof Symbol.toStringTag === 'symbol';

function isESModule (obj) {
  return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')
}

// in Webpack 2, require.ensure now also returns a Promise
// so the resolve/reject functions may get called an extra time
// if the user uses an arrow function shorthand that happens to
// return that Promise.
function once (fn) {
  var called = false;
  return function () {
    var args = [], len = arguments.length;
    while ( len-- ) args[ len ] = arguments[ len ];

    if (called) { return }
    called = true;
    return fn.apply(this, args)
  }
}

/*  */

var History = function History (router, base) {
  this.router = router;
  this.base = normalizeBase(base);
  // start with a route object that stands for "nowhere"
  this.current = START;
  this.pending = null;
  this.ready = false;
  this.readyCbs = [];
  this.readyErrorCbs = [];
  this.errorCbs = [];
  this.listeners = [];
};

History.prototype.listen = function listen (cb) {
  this.cb = cb;
};

History.prototype.onReady = function onReady (cb, errorCb) {
  if (this.ready) {
    cb();
  } else {
    this.readyCbs.push(cb);
    if (errorCb) {
      this.readyErrorCbs.push(errorCb);
    }
  }
};

History.prototype.onError = function onError (errorCb) {
  this.errorCbs.push(errorCb);
};

History.prototype.transitionTo = function transitionTo (
  location,
  onComplete,
  onAbort
) {
    var this$1 = this;

  var route;
  // catch redirect option https://github.com/vuejs/vue-router/issues/3201
  try {
    route = this.router.match(location, this.current);
  } catch (e) {
    this.errorCbs.forEach(function (cb) {
      cb(e);
    });
    // Exception should still be thrown
    throw e
  }
  this.confirmTransition(
    route,
    function () {
      var prev = this$1.current;
      this$1.updateRoute(route);
      onComplete && onComplete(route);
      this$1.ensureURL();
      this$1.router.afterHooks.forEach(function (hook) {
        hook && hook(route, prev);
      });

      // fire ready cbs once
      if (!this$1.ready) {
        this$1.ready = true;
        this$1.readyCbs.forEach(function (cb) {
          cb(route);
        });
      }
    },
    function (err) {
      if (onAbort) {
        onAbort(err);
      }
      if (err && !this$1.ready) {
        this$1.ready = true;
        // Initial redirection should still trigger the onReady onSuccess
        // https://github.com/vuejs/vue-router/issues/3225
        if (!isNavigationFailure(err, NavigationFailureType.redirected)) {
          this$1.readyErrorCbs.forEach(function (cb) {
            cb(err);
          });
        } else {
          this$1.readyCbs.forEach(function (cb) {
            cb(route);
          });
        }
      }
    }
  );
};

History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {
    var this$1 = this;

  var current = this.current;
  var abort = function (err) {
    // changed after adding errors with
    // https://github.com/vuejs/vue-router/pull/3047 before that change,
    // redirect and aborted navigation would produce an err == null
    if (!isNavigationFailure(err) && isError(err)) {
      if (this$1.errorCbs.length) {
        this$1.errorCbs.forEach(function (cb) {
          cb(err);
        });
      } else {
        warn(false, 'uncaught error during route navigation:');
        console.error(err);
      }
    }
    onAbort && onAbort(err);
  };
  var lastRouteIndex = route.matched.length - 1;
  var lastCurrentIndex = current.matched.length - 1;
  if (
    isSameRoute(route, current) &&
    // in the case the route map has been dynamically appended to
    lastRouteIndex === lastCurrentIndex &&
    route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]
  ) {
    this.ensureURL();
    return abort(createNavigationDuplicatedError(current, route))
  }

  var ref = resolveQueue(
    this.current.matched,
    route.matched
  );
    var updated = ref.updated;
    var deactivated = ref.deactivated;
    var activated = ref.activated;

  var queue = [].concat(
    // in-component leave guards
    extractLeaveGuards(deactivated),
    // global before hooks
    this.router.beforeHooks,
    // in-component update hooks
    extractUpdateHooks(updated),
    // in-config enter guards
    activated.map(function (m) { return m.beforeEnter; }),
    // async components
    resolveAsyncComponents(activated)
  );

  this.pending = route;
  var iterator = function (hook, next) {
    if (this$1.pending !== route) {
      return abort(createNavigationCancelledError(current, route))
    }
    try {
      hook(route, current, function (to) {
        if (to === false) {
          // next(false) -> abort navigation, ensure current URL
          this$1.ensureURL(true);
          abort(createNavigationAbortedError(current, route));
        } else if (isError(to)) {
          this$1.ensureURL(true);
          abort(to);
        } else if (
          typeof to === 'string' ||
          (typeof to === 'object' &&
            (typeof to.path === 'string' || typeof to.name === 'string'))
        ) {
          // next('/') or next({ path: '/' }) -> redirect
          abort(createNavigationRedirectedError(current, route));
          if (typeof to === 'object' && to.replace) {
            this$1.replace(to);
          } else {
            this$1.push(to);
          }
        } else {
          // confirm transition and pass on the value
          next(to);
        }
      });
    } catch (e) {
      abort(e);
    }
  };

  runQueue(queue, iterator, function () {
    var postEnterCbs = [];
    var isValid = function () { return this$1.current === route; };
    // wait until async components are resolved before
    // extracting in-component enter guards
    var enterGuards = extractEnterGuards(activated, postEnterCbs, isValid);
    var queue = enterGuards.concat(this$1.router.resolveHooks);
    runQueue(queue, iterator, function () {
      if (this$1.pending !== route) {
        return abort(createNavigationCancelledError(current, route))
      }
      this$1.pending = null;
      onComplete(route);
      if (this$1.router.app) {
        this$1.router.app.$nextTick(function () {
          postEnterCbs.forEach(function (cb) {
            cb();
          });
        });
      }
    });
  });
};

History.prototype.updateRoute = function updateRoute (route) {
  this.current = route;
  this.cb && this.cb(route);
};

History.prototype.setupListeners = function setupListeners () {
  // Default implementation is empty
};

History.prototype.teardownListeners = function teardownListeners () {
  this.listeners.forEach(function (cleanupListener) {
    cleanupListener();
  });
  this.listeners = [];
};

function normalizeBase (base) {
  if (!base) {
    if (inBrowser) {
      // respect <base> tag
      var baseEl = document.querySelector('base');
      base = (baseEl && baseEl.getAttribute('href')) || '/';
      // strip full URL origin
      base = base.replace(/^https?:\/\/[^\/]+/, '');
    } else {
      base = '/';
    }
  }
  // make sure there's the starting slash
  if (base.charAt(0) !== '/') {
    base = '/' + base;
  }
  // remove trailing slash
  return base.replace(/\/$/, '')
}

function resolveQueue (
  current,
  next
) {
  var i;
  var max = Math.max(current.length, next.length);
  for (i = 0; i < max; i++) {
    if (current[i] !== next[i]) {
      break
    }
  }
  return {
    updated: next.slice(0, i),
    activated: next.slice(i),
    deactivated: current.slice(i)
  }
}

function extractGuards (
  records,
  name,
  bind,
  reverse
) {
  var guards = flatMapComponents(records, function (def, instance, match, key) {
    var guard = extractGuard(def, name);
    if (guard) {
      return Array.isArray(guard)
        ? guard.map(function (guard) { return bind(guard, instance, match, key); })
        : bind(guard, instance, match, key)
    }
  });
  return flatten(reverse ? guards.reverse() : guards)
}

function extractGuard (
  def,
  key
) {
  if (typeof def !== 'function') {
    // extend now so that global mixins are applied.
    def = _Vue.extend(def);
  }
  return def.options[key]
}

function extractLeaveGuards (deactivated) {
  return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)
}

function extractUpdateHooks (updated) {
  return extractGuards(updated, 'beforeRouteUpdate', bindGuard)
}

function bindGuard (guard, instance) {
  if (instance) {
    return function boundRouteGuard () {
      return guard.apply(instance, arguments)
    }
  }
}

function extractEnterGuards (
  activated,
  cbs,
  isValid
) {
  return extractGuards(
    activated,
    'beforeRouteEnter',
    function (guard, _, match, key) {
      return bindEnterGuard(guard, match, key, cbs, isValid)
    }
  )
}

function bindEnterGuard (
  guard,
  match,
  key,
  cbs,
  isValid
) {
  return function routeEnterGuard (to, from, next) {
    return guard(to, from, function (cb) {
      if (typeof cb === 'function') {
        cbs.push(function () {
          // #750
          // if a router-view is wrapped with an out-in transition,
          // the instance may not have been registered at this time.
          // we will need to poll for registration until current route
          // is no longer valid.
          poll(cb, match.instances, key, isValid);
        });
      }
      next(cb);
    })
  }
}

function poll (
  cb, // somehow flow cannot infer this is a function
  instances,
  key,
  isValid
) {
  if (
    instances[key] &&
    !instances[key]._isBeingDestroyed // do not reuse being destroyed instance
  ) {
    cb(instances[key]);
  } else if (isValid()) {
    setTimeout(function () {
      poll(cb, instances, key, isValid);
    }, 16);
  }
}

/*  */

var HTML5History = /*@__PURE__*/(function (History) {
  function HTML5History (router, base) {
    History.call(this, router, base);

    this._startLocation = getLocation(this.base);
  }

  if ( History ) HTML5History.__proto__ = History;
  HTML5History.prototype = Object.create( History && History.prototype );
  HTML5History.prototype.constructor = HTML5History;

  HTML5History.prototype.setupListeners = function setupListeners () {
    var this$1 = this;

    if (this.listeners.length > 0) {
      return
    }

    var router = this.router;
    var expectScroll = router.options.scrollBehavior;
    var supportsScroll = supportsPushState && expectScroll;

    if (supportsScroll) {
      this.listeners.push(setupScroll());
    }

    var handleRoutingEvent = function () {
      var current = this$1.current;

      // Avoiding first `popstate` event dispatched in some browsers but first
      // history route not updated since async guard at the same time.
      var location = getLocation(this$1.base);
      if (this$1.current === START && location === this$1._startLocation) {
        return
      }

      this$1.transitionTo(location, function (route) {
        if (supportsScroll) {
          handleScroll(router, route, current, true);
        }
      });
    };
    window.addEventListener('popstate', handleRoutingEvent);
    this.listeners.push(function () {
      window.removeEventListener('popstate', handleRoutingEvent);
    });
  };

  HTML5History.prototype.go = function go (n) {
    window.history.go(n);
  };

  HTML5History.prototype.push = function push (location, onComplete, onAbort) {
    var this$1 = this;

    var ref = this;
    var fromRoute = ref.current;
    this.transitionTo(location, function (route) {
      pushState(cleanPath(this$1.base + route.fullPath));
      handleScroll(this$1.router, route, fromRoute, false);
      onComplete && onComplete(route);
    }, onAbort);
  };

  HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {
    var this$1 = this;

    var ref = this;
    var fromRoute = ref.current;
    this.transitionTo(location, function (route) {
      replaceState(cleanPath(this$1.base + route.fullPath));
      handleScroll(this$1.router, route, fromRoute, false);
      onComplete && onComplete(route);
    }, onAbort);
  };

  HTML5History.prototype.ensureURL = function ensureURL (push) {
    if (getLocation(this.base) !== this.current.fullPath) {
      var current = cleanPath(this.base + this.current.fullPath);
      push ? pushState(current) : replaceState(current);
    }
  };

  HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {
    return getLocation(this.base)
  };

  return HTML5History;
}(History));

function getLocation (base) {
  var path = decodeURI(window.location.pathname);
  if (base && path.toLowerCase().indexOf(base.toLowerCase()) === 0) {
    path = path.slice(base.length);
  }
  return (path || '/') + window.location.search + window.location.hash
}

/*  */

var HashHistory = /*@__PURE__*/(function (History) {
  function HashHistory (router, base, fallback) {
    History.call(this, router, base);
    // check history fallback deeplinking
    if (fallback && checkFallback(this.base)) {
      return
    }
    ensureSlash();
  }

  if ( History ) HashHistory.__proto__ = History;
  HashHistory.prototype = Object.create( History && History.prototype );
  HashHistory.prototype.constructor = HashHistory;

  // this is delayed until the app mounts
  // to avoid the hashchange listener being fired too early
  HashHistory.prototype.setupListeners = function setupListeners () {
    var this$1 = this;

    if (this.listeners.length > 0) {
      return
    }

    var router = this.router;
    var expectScroll = router.options.scrollBehavior;
    var supportsScroll = supportsPushState && expectScroll;

    if (supportsScroll) {
      this.listeners.push(setupScroll());
    }

    var handleRoutingEvent = function () {
      var current = this$1.current;
      if (!ensureSlash()) {
        return
      }
      this$1.transitionTo(getHash(), function (route) {
        if (supportsScroll) {
          handleScroll(this$1.router, route, current, true);
        }
        if (!supportsPushState) {
          replaceHash(route.fullPath);
        }
      });
    };
    var eventType = supportsPushState ? 'popstate' : 'hashchange';
    window.addEventListener(
      eventType,
      handleRoutingEvent
    );
    this.listeners.push(function () {
      window.removeEventListener(eventType, handleRoutingEvent);
    });
  };

  HashHistory.prototype.push = function push (location, onComplete, onAbort) {
    var this$1 = this;

    var ref = this;
    var fromRoute = ref.current;
    this.transitionTo(
      location,
      function (route) {
        pushHash(route.fullPath);
        handleScroll(this$1.router, route, fromRoute, false);
        onComplete && onComplete(route);
      },
      onAbort
    );
  };

  HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {
    var this$1 = this;

    var ref = this;
    var fromRoute = ref.current;
    this.transitionTo(
      location,
      function (route) {
        replaceHash(route.fullPath);
        handleScroll(this$1.router, route, fromRoute, false);
        onComplete && onComplete(route);
      },
      onAbort
    );
  };

  HashHistory.prototype.go = function go (n) {
    window.history.go(n);
  };

  HashHistory.prototype.ensureURL = function ensureURL (push) {
    var current = this.current.fullPath;
    if (getHash() !== current) {
      push ? pushHash(current) : replaceHash(current);
    }
  };

  HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {
    return getHash()
  };

  return HashHistory;
}(History));

function checkFallback (base) {
  var location = getLocation(base);
  if (!/^\/#/.test(location)) {
    window.location.replace(cleanPath(base + '/#' + location));
    return true
  }
}

function ensureSlash () {
  var path = getHash();
  if (path.charAt(0) === '/') {
    return true
  }
  replaceHash('/' + path);
  return false
}

function getHash () {
  // We can't use window.location.hash here because it's not
  // consistent across browsers - Firefox will pre-decode it!
  var href = window.location.href;
  var index = href.indexOf('#');
  // empty path
  if (index < 0) { return '' }

  href = href.slice(index + 1);
  // decode the hash but not the search or hash
  // as search(query) is already decoded
  // https://github.com/vuejs/vue-router/issues/2708
  var searchIndex = href.indexOf('?');
  if (searchIndex < 0) {
    var hashIndex = href.indexOf('#');
    if (hashIndex > -1) {
      href = decodeURI(href.slice(0, hashIndex)) + href.slice(hashIndex);
    } else { href = decodeURI(href); }
  } else {
    href = decodeURI(href.slice(0, searchIndex)) + href.slice(searchIndex);
  }

  return href
}

function getUrl (path) {
  var href = window.location.href;
  var i = href.indexOf('#');
  var base = i >= 0 ? href.slice(0, i) : href;
  return (base + "#" + path)
}

function pushHash (path) {
  if (supportsPushState) {
    pushState(getUrl(path));
  } else {
    window.location.hash = path;
  }
}

function replaceHash (path) {
  if (supportsPushState) {
    replaceState(getUrl(path));
  } else {
    window.location.replace(getUrl(path));
  }
}

/*  */

var AbstractHistory = /*@__PURE__*/(function (History) {
  function AbstractHistory (router, base) {
    History.call(this, router, base);
    this.stack = [];
    this.index = -1;
  }

  if ( History ) AbstractHistory.__proto__ = History;
  AbstractHistory.prototype = Object.create( History && History.prototype );
  AbstractHistory.prototype.constructor = AbstractHistory;

  AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {
    var this$1 = this;

    this.transitionTo(
      location,
      function (route) {
        this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);
        this$1.index++;
        onComplete && onComplete(route);
      },
      onAbort
    );
  };

  AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {
    var this$1 = this;

    this.transitionTo(
      location,
      function (route) {
        this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);
        onComplete && onComplete(route);
      },
      onAbort
    );
  };

  AbstractHistory.prototype.go = function go (n) {
    var this$1 = this;

    var targetIndex = this.index + n;
    if (targetIndex < 0 || targetIndex >= this.stack.length) {
      return
    }
    var route = this.stack[targetIndex];
    this.confirmTransition(
      route,
      function () {
        this$1.index = targetIndex;
        this$1.updateRoute(route);
      },
      function (err) {
        if (isNavigationFailure(err, NavigationFailureType.duplicated)) {
          this$1.index = targetIndex;
        }
      }
    );
  };

  AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {
    var current = this.stack[this.stack.length - 1];
    return current ? current.fullPath : '/'
  };

  AbstractHistory.prototype.ensureURL = function ensureURL () {
    // noop
  };

  return AbstractHistory;
}(History));

/*  */

var VueRouter = function VueRouter (options) {
  if ( options === void 0 ) options = {};

  this.app = null;
  this.apps = [];
  this.options = options;
  this.beforeHooks = [];
  this.resolveHooks = [];
  this.afterHooks = [];
  this.matcher = createMatcher(options.routes || [], this);

  var mode = options.mode || 'hash';
  this.fallback =
    mode === 'history' && !supportsPushState && options.fallback !== false;
  if (this.fallback) {
    mode = 'hash';
  }
  if (!inBrowser) {
    mode = 'abstract';
  }
  this.mode = mode;

  switch (mode) {
    case 'history':
      this.history = new HTML5History(this, options.base);
      break
    case 'hash':
      this.history = new HashHistory(this, options.base, this.fallback);
      break
    case 'abstract':
      this.history = new AbstractHistory(this, options.base);
      break
    default:
      if (true) {
        assert(false, ("invalid mode: " + mode));
      }
  }
};

var prototypeAccessors = { currentRoute: { configurable: true } };

VueRouter.prototype.match = function match (raw, current, redirectedFrom) {
  return this.matcher.match(raw, current, redirectedFrom)
};

prototypeAccessors.currentRoute.get = function () {
  return this.history && this.history.current
};

VueRouter.prototype.init = function init (app /* Vue component instance */) {
    var this$1 = this;

  "development" !== 'production' &&
    assert(
      install.installed,
      "not installed. Make sure to call `Vue.use(VueRouter)` " +
        "before creating root instance."
    );

  this.apps.push(app);

  // set up app destroyed handler
  // https://github.com/vuejs/vue-router/issues/2639
  app.$once('hook:destroyed', function () {
    // clean out app from this.apps array once destroyed
    var index = this$1.apps.indexOf(app);
    if (index > -1) { this$1.apps.splice(index, 1); }
    // ensure we still have a main app or null if no apps
    // we do not release the router so it can be reused
    if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }

    if (!this$1.app) {
      // clean up event listeners
      // https://github.com/vuejs/vue-router/issues/2341
      this$1.history.teardownListeners();
    }
  });

  // main app previously initialized
  // return as we don't need to set up new history listener
  if (this.app) {
    return
  }

  this.app = app;

  var history = this.history;

  if (history instanceof HTML5History || history instanceof HashHistory) {
    var handleInitialScroll = function (routeOrError) {
      var from = history.current;
      var expectScroll = this$1.options.scrollBehavior;
      var supportsScroll = supportsPushState && expectScroll;

      if (supportsScroll && 'fullPath' in routeOrError) {
        handleScroll(this$1, routeOrError, from, false);
      }
    };
    var setupListeners = function (routeOrError) {
      history.setupListeners();
      handleInitialScroll(routeOrError);
    };
    history.transitionTo(
      history.getCurrentLocation(),
      setupListeners,
      setupListeners
    );
  }

  history.listen(function (route) {
    this$1.apps.forEach(function (app) {
      app._route = route;
    });
  });
};

VueRouter.prototype.beforeEach = function beforeEach (fn) {
  return registerHook(this.beforeHooks, fn)
};

VueRouter.prototype.beforeResolve = function beforeResolve (fn) {
  return registerHook(this.resolveHooks, fn)
};

VueRouter.prototype.afterEach = function afterEach (fn) {
  return registerHook(this.afterHooks, fn)
};

VueRouter.prototype.onReady = function onReady (cb, errorCb) {
  this.history.onReady(cb, errorCb);
};

VueRouter.prototype.onError = function onError (errorCb) {
  this.history.onError(errorCb);
};

VueRouter.prototype.push = function push (location, onComplete, onAbort) {
    var this$1 = this;

  // $flow-disable-line
  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {
    return new Promise(function (resolve, reject) {
      this$1.history.push(location, resolve, reject);
    })
  } else {
    this.history.push(location, onComplete, onAbort);
  }
};

VueRouter.prototype.replace = function replace (location, onComplete, onAbort) {
    var this$1 = this;

  // $flow-disable-line
  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {
    return new Promise(function (resolve, reject) {
      this$1.history.replace(location, resolve, reject);
    })
  } else {
    this.history.replace(location, onComplete, onAbort);
  }
};

VueRouter.prototype.go = function go (n) {
  this.history.go(n);
};

VueRouter.prototype.back = function back () {
  this.go(-1);
};

VueRouter.prototype.forward = function forward () {
  this.go(1);
};

VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {
  var route = to
    ? to.matched
      ? to
      : this.resolve(to).route
    : this.currentRoute;
  if (!route) {
    return []
  }
  return [].concat.apply(
    [],
    route.matched.map(function (m) {
      return Object.keys(m.components).map(function (key) {
        return m.components[key]
      })
    })
  )
};

VueRouter.prototype.resolve = function resolve (
  to,
  current,
  append
) {
  current = current || this.history.current;
  var location = normalizeLocation(to, current, append, this);
  var route = this.match(location, current);
  var fullPath = route.redirectedFrom || route.fullPath;
  var base = this.history.base;
  var href = createHref(base, fullPath, this.mode);
  return {
    location: location,
    route: route,
    href: href,
    // for backwards compat
    normalizedTo: location,
    resolved: route
  }
};

VueRouter.prototype.addRoutes = function addRoutes (routes) {
  this.matcher.addRoutes(routes);
  if (this.history.current !== START) {
    this.history.transitionTo(this.history.getCurrentLocation());
  }
};

Object.defineProperties( VueRouter.prototype, prototypeAccessors );

function registerHook (list, fn) {
  list.push(fn);
  return function () {
    var i = list.indexOf(fn);
    if (i > -1) { list.splice(i, 1); }
  }
}

function createHref (base, fullPath, mode) {
  var path = mode === 'hash' ? '#' + fullPath : fullPath;
  return base ? cleanPath(base + '/' + path) : path
}

VueRouter.install = install;
VueRouter.version = '3.4.3';
VueRouter.isNavigationFailure = isNavigationFailure;
VueRouter.NavigationFailureType = NavigationFailureType;

if (inBrowser && window.Vue) {
  window.Vue.use(VueRouter);
}

/* harmony default export */ __webpack_exports__["default"] = (VueRouter);


/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(13)
)

/* script */
__vue_exports__ = __webpack_require__(14)

/* template */
var __vue_template__ = __webpack_require__(129)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-832682a0"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 13 */
/***/ (function(module, exports) {

module.exports = {
  "mainContent": {
    "alignContent": "center"
  },
  "musicScoreTip": {
    "width": "740",
    "alignSelf": "center",
    "borderStyle": "solid",
    "borderWidth": "1",
    "borderColor": "#BBBBBB",
    "justifyContent": "center"
  },
  "musicScoreIcon": {
    "fontSize": "28",
    "marginLeft": "10"
  },
  "tipIcon": {
    "position": "absolute",
    "left": "15",
    "width": "40",
    "height": "40"
  },
  "resultTip": {
    "width": "740",
    "alignSelf": "center",
    "borderStyle": "solid",
    "borderWidth": "1",
    "borderColor": "#BBBBBB",
    "justifyContent": "center"
  },
  "resultIcon": {
    "fontSize": "28",
    "marginLeft": "10"
  },
  "topBarFont": {
    "fontSize": "36",
    "fontWeight": "900"
  },
  "whiteKey": {
    "flex": 1,
    "borderWidth": "2",
    "borderStyle": "solid",
    "borderColor": "#999999",
    "backgroundColor": "rgb(238,238,238)",
    "backgroundColor:active": "rgba(122,125,125,0.76)"
  },
  "blackKey": {
    "position": "absolute",
    "borderWidth": "2",
    "borderStyle": "solid",
    "borderColor": "#999999",
    "backgroundColor": "rgb(95,89,89)",
    "width": "68",
    "backgroundColor:active": "rgba(122,125,125,1)"
  }
}

/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _wxcPopover = __webpack_require__(3);

var _wxcPopover2 = _interopRequireDefault(_wxcPopover);

var _wxcMinibar = __webpack_require__(5);

var _wxcMinibar2 = _interopRequireDefault(_wxcMinibar);

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/**
 * 功能页
 */


var _natjs = __webpack_require__(23);

var _natjs2 = _interopRequireDefault(_natjs);

var _musicFlagInput = __webpack_require__(49);

var _musicFlagInput2 = _interopRequireDefault(_musicFlagInput);

var _pianoKey = __webpack_require__(55);

var _pianoKey2 = _interopRequireDefault(_pianoKey);

var _common = __webpack_require__(1);

var _musicIntervalInput = __webpack_require__(59);

var _musicIntervalInput2 = _interopRequireDefault(_musicIntervalInput);

var _musicResultShow = __webpack_require__(63);

var _musicResultShow2 = _interopRequireDefault(_musicResultShow);

var _pathUtil = __webpack_require__(2);

var _compute = __webpack_require__(0);

var _musicGetByIntervalInput = __webpack_require__(67);

var _musicGetByIntervalInput2 = _interopRequireDefault(_musicGetByIntervalInput);

var _musicResultGetByIntervalShow = __webpack_require__(109);

var _musicResultGetByIntervalShow2 = _interopRequireDefault(_musicResultGetByIntervalShow);

var _musicChordTriadInput = __webpack_require__(113);

var _musicChordTriadInput2 = _interopRequireDefault(_musicChordTriadInput);

var _musicChordSeventhInput = __webpack_require__(117);

var _musicChordSeventhInput2 = _interopRequireDefault(_musicChordSeventhInput);

var _musicResultGetSeventhShow = __webpack_require__(121);

var _musicResultGetSeventhShow2 = _interopRequireDefault(_musicResultGetSeventhShow);

var _musicResultGetTriadShow = __webpack_require__(125);

var _musicResultGetTriadShow2 = _interopRequireDefault(_musicResultGetTriadShow);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = {
    name: "function-module",
    components: {
        MusicResultGetTriadShow: _musicResultGetTriadShow2.default,
        MusicResultGetSeventhShow: _musicResultGetSeventhShow2.default,
        MusicChordSeventhInput: _musicChordSeventhInput2.default,
        MusicChordTriadInput: _musicChordTriadInput2.default,
        MusicResultGetByIntervalShow: _musicResultGetByIntervalShow2.default,
        MusicGetByIntervalShow: _musicResultGetByIntervalShow2.default,
        MusicGetByIntervalInput: _musicGetByIntervalInput2.default,
        MusicResultShow: _musicResultShow2.default, MusicIntervalInput: _musicIntervalInput2.default, PianoKey: _pianoKey2.default, MusicFlagInput: _musicFlagInput2.default, WxcMinibar: _wxcMinibar2.default, WxcPopover: _wxcPopover2.default
    },
    data: function data() {
        return {
            packageData: {
                temp: null,
                pianoKeyList: [{ "xValue": "c", "yValue": "60", whiteOffset: { 'left': '5px' } }, { "xValue": "c", "yValue": "61", offset: { 'left': '70px' } }, { "xValue": "d", "yValue": "62", whiteOffset: { 'left': '110px' } }, { "xValue": "d", "yValue": "63", offset: { 'left': '180px' } }, { "xValue": "e", "yValue": "64", whiteOffset: { 'left': '215px' } }, { "xValue": "f", "yValue": "65", whiteOffset: { 'left': '320px' } }, { "xValue": "f", "yValue": "66", offset: { 'left': '390px' } }, { "xValue": "g", "yValue": "67", whiteOffset: { 'left': '425px' } }, { "xValue": "g", "yValue": "68", offset: { 'left': '500px' } }, { "xValue": "a", "yValue": "69", whiteOffset: { 'left': '530px' } }, { "xValue": "a", "yValue": "70", offset: { 'left': '610px' } }, { "xValue": "b", "yValue": "71", whiteOffset: { 'left': '615px' } }]
            },
            img: {
                musicScoreUrl: (0, _pathUtil.getImagePath)('music_score'),
                musicFlagUrl: (0, _pathUtil.getImagePath)('music_flag'),
                relevanceUrl: (0, _pathUtil.getImagePath)('relevance'),
                answerUrl: (0, _pathUtil.getImagePath)('answer')
            },
            btns: [{
                text: '两个音之间的音程',
                key: 'interval'
            }, {
                text: '已知1音与音程求2音',
                key: 'getKeyByInterval'
            }, {
                text: '已知三个音求三和弦',
                key: 'getTriad'
            }, {
                text: '已知四个音求七和弦',
                key: 'getSeventh'
            }],
            popoverPosition: { x: -33, y: 380 },
            popoverArrowPosition: { pos: 'right' },
            layoutParams: {
                fullScreen: 'position:absolute;top:0;bottom:0;left:0;right:0;'
            },
            musicFlagList: [],
            musicQuestionList: [],
            musicResultList: [],
            currentMusicFlag: '',
            consoleLog: '',
            styles: {
                musicScoreContainer: {
                    height: (0, _common.getDeviceHeight)(0.2)
                },
                musicScoreTip: {
                    height: (0, _common.getDeviceHeight)(0.05)
                },
                musicInputAndQuestion: {
                    height: (0, _common.getDeviceHeight)(0.25)
                },
                resultContainer: {
                    height: (0, _common.getDeviceHeight)(0.252),
                    'border-width': '1px',
                    'border-style': 'solid',
                    'border-color': 'black'
                },
                keySubAddBtn: {
                    bottom: (0, _common.getFormatHeightPX)(230)
                }
            }
        };
    },
    mounted: function mounted() {
        // let width = this.$getConfig().env.deviceWidth;
        // let height = this.$getConfig().env.deviceHeight;
        // toast(width + '--' + height)
        //             let h = getDeviceHeight();
        // toast(getFormatHeightPX(60))
        // toast(h)
    },

    methods: {
        //当三和弦问题填写完毕后的回调
        handleTriadFinished: function handleTriadFinished(chord) {
            if (!chord || !chord.result) {
                (0, _common.toast)('输入的三个音无法计算三和弦!建议更换后再试');
                return false;
            }
            // 判断是否结果已经存在
            var exist = this.getQuestionResult(chord.uuid);
            if (exist) {
                this.$set(this.musicResultList, exist.index, _extends({}, chord, { type: 'getTriad' }));
            } else {
                //放入一个答案输出
                this.musicResultList.push(_extends({}, chord, { type: 'getTriad' }));
            }
        },

        //当七和弦问题填写完毕后的回调
        handleSeventhFinished: function handleSeventhFinished(chord) {
            if (!chord || !chord.result) {
                (0, _common.toast)('输入的四个音无法计算七和弦!建议更换后再试');
                return false;
            }
            // 判断是否结果已经存在
            var exist = this.getQuestionResult(chord.uuid);
            if (exist) {
                this.$set(this.musicResultList, exist.index, _extends({}, chord, { type: 'getSeventhChord' }));
            } else {
                //放入一个答案输出
                this.musicResultList.push(_extends({}, chord, { type: 'getSeventhChord' }));
            }
        },

        //当已知一音和音程问题填写完毕后的回调
        handleGetByIntervalFinished: function handleGetByIntervalFinished(interval) {
            if (!interval || !interval.result) {
                return false;
            }
            // 判断是否结果已经存在
            var exist = this.getQuestionResult(interval.uuid);
            if (exist) {
                this.$set(this.musicResultList, exist.index, _extends({}, interval, { type: 'getByInterval' }));
            } else {
                //放入一个答案输出
                this.musicResultList.push(_extends({}, interval, { type: 'getByInterval' }));
            }
        },

        //增/减钢琴键的八度
        handlePianoKeySwitch: function handlePianoKeySwitch(type) {
            // this.show();
            var success = true;
            // toast(this.packageData)
            var copy = JSON.parse(JSON.stringify(this.packageData.pianoKeyList));
            switch (type) {
                case 'sub':
                    this.packageData.pianoKeyList.forEach(function (key, index) {
                        var yValue = +key.yValue - 12;
                        var flag = (0, _compute.getMusicFlagByMusicNameYValue)(key.xValue, yValue.toString());
                        if (!flag) {
                            success = false;
                        } else {
                            copy[index].xValue = flag.musicName;
                            copy[index].yValue = flag.yValue;
                        }
                    });
                    break;
                case 'add':
                    this.packageData.pianoKeyList.forEach(function (key, index) {
                        var yValue = +key.yValue + 12;
                        var flag = (0, _compute.getMusicFlagByMusicNameYValue)(key.xValue, yValue.toString());
                        if (!flag) {
                            success = false;
                        } else {
                            copy[index].xValue = flag.musicName;
                            copy[index].yValue = flag.yValue;
                        }
                    });
                    break;
            }
            if (success) {
                // this.pianoKeyList  = copy;
                this.$set(this.packageData, 'pianoKeyList', copy);
                // toast(copy)
            }
        },

        //当问题删除时回调
        handleMusicQuestionDelete: function handleMusicQuestionDelete(uuid, index) {
            //如果答案中存在该问题结果,也要删除对应答案
            var result = this.getQuestionResult(uuid);
            if (result) {
                this.musicResultList.splice(result.index, 1);
            }
            this.musicQuestionList.splice(index, 1);
            this.refreshResultList();
        },

        //刷新结果框
        refreshResultList: function refreshResultList() {
            var _this = this;

            this.musicResultList.forEach(function (item, idx) {
                _this.musicQuestionList.forEach(function (question, index) {
                    if (item.uuid === question.uuid) {
                        _this.$set(_this.musicResultList, idx, _extends({}, item, { index: index + 1 }));
                    }
                });
            });
        },

        //音程音输入事件
        handlePushArg: function handlePushArg(cb) {
            cb(this.currentMusicFlag, function (result) {
                //当两个音都输入完成后，走该回调事件
            });
        },

        //查找答案输出列表中是否存在对应uuid的问题答案
        getQuestionResult: function getQuestionResult(uuid) {
            var res = null;
            this.musicResultList.find(function (item, index) {
                if (item.uuid === uuid) {
                    res = { index: index, item: item };
                }
            });
            return res;
        },

        //当音程问题两个音都选择后的回调
        handleIntervalInputFinished: function handleIntervalInputFinished(res) {
            if (!res.result) {
                (0, _common.toast)('你输入的两个音无法计算音程,建议更换音后再试');
            } else {
                //判断是否结果已经存在
                var exist = this.getQuestionResult(res.uuid);
                if (exist) {
                    this.$set(this.musicResultList, exist.index, _extends({}, res, { type: 'interval' }));
                } else {
                    //放入一个答案输出
                    this.musicResultList.push(_extends({}, res, { type: 'interval' }));
                }
            }
        },
        switchMusicFlagInput: function switchMusicFlagInput(index) {
            var _this2 = this;

            this.musicFlagList.forEach(function (item, index1) {
                index === index1 ? function () {
                    item.isClicked = true;
                    _this2.currentMusicFlag = item;
                }() : item.isClicked = false;
            });
        },
        popMusicFlagInput: function popMusicFlagInput() {
            this.musicFlagList.push({
                uuid: new Date().getTime().toString(),
                xValue: '60',
                yValue: '60',
                isClicked: false
            });
        },

        //弹出问题输入类型选择菜单
        popRelationMenu: function popRelationMenu() {
            this.$refs['wxc-popover'].wxcPopoverShow();
        },

        //当类型选择后的回调事件
        popoverButtonClicked: function popoverButtonClicked(obj) {
            switch (obj.index.toString()) {
                case '0':
                    this.musicQuestionList.push({
                        uuid: new Date().getTime().toString(),
                        'type': 'interval',
                        firstArg: null,
                        lastArg: null
                    });
                    break;
                //已知1音与音程求2音
                case '1':
                    this.musicQuestionList.push({
                        uuid: new Date().getTime().toString(),
                        'type': 'getByInterval'
                    });
                    break;
                //已知三个音求三和弦
                case '2':
                    this.musicQuestionList.push({
                        uuid: new Date().getTime().toString(),
                        'type': 'getTriad'
                    });
                    break;
                //已知四个音求七和弦
                case '3':
                    this.musicQuestionList.push({
                        uuid: new Date().getTime().toString(),
                        'type': 'getSeventh'
                    });
                    break;
            }
        },
        handleKeyInput: function handleKeyInput(info) {
            this.currentMusicFlag.xValue = info.xValue;
            this.currentMusicFlag.yValue = info.yValue;
        }
    }
};

/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(16)
)

/* script */
__vue_exports__ = __webpack_require__(17)

/* template */
var __vue_template__ = __webpack_require__(18)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-popover\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-e97beb1e"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 16 */
/***/ (function(module, exports) {

module.exports = {
  "wrapper": {
    "zIndex": 999
  },
  "g-cover": {
    "position": "fixed",
    "top": 0,
    "right": 0,
    "left": 0,
    "bottom": 0,
    "backgroundColor": "rgba(0,0,0,0.4)",
    "zIndex": 1
  },
  "g-popover": {
    "position": "fixed",
    "paddingTop": "15",
    "paddingRight": "15",
    "paddingBottom": "15",
    "paddingLeft": "15",
    "zIndex": 10
  },
  "u-popover-arrow": {
    "position": "absolute",
    "borderRadius": "4",
    "width": "30",
    "height": "30",
    "backgroundColor": "#ffffff"
  },
  "u-popover-inner": {
    "borderRadius": "10",
    "backgroundColor": "#ffffff"
  },
  "i-btn": {
    "flexDirection": "row",
    "justifyContent": "space-between",
    "alignItems": "center",
    "marginLeft": "20",
    "marginRight": "20",
    "paddingLeft": "20",
    "paddingRight": "20",
    "borderBottomWidth": "1",
    "borderBottomColor": "#dddddd"
  },
  "i-btn-noborder": {
    "borderBottomColor": "#ffffff"
  },
  "btn-icon": {
    "width": "32",
    "height": "32",
    "marginRight": "16"
  },
  "btn-text": {
    "flex": 1,
    "height": "80",
    "fontSize": "30",
    "lineHeight": "80"
  },
  "text-align-center": {
    "textAlign": "center"
  }
}

/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

var animation = weex.requireModule('animation');
exports.default = {
  props: {
    buttons: {
      type: Array,
      default: []
    },
    position: {
      type: Object,
      default: function _default() {
        return {
          x: 0,
          y: 0
        };
      }
    },
    arrowPosition: {
      type: Object,
      default: function _default() {
        return {
          pos: 'top',
          x: 0,
          y: 0
        };
      }
    },
    coverColor: {
      type: String,
      default: 'rgba(0, 0, 0, 0.4)'
    },
    hasAnimation: {
      type: Boolean,
      default: true
    },
    textStyle: {
      type: Object,
      default: function _default() {
        return {};
      }
    }
  },
  data: function data() {
    return {
      show: false,
      showIn: false
    };
  },
  computed: {
    coverStyle: function coverStyle() {
      return this.coverColor ? { backgroundColor: this.coverColor, opacity: this.hasAnimation || !this.showIn ? '0' : '1' } : '';
    },
    transformOrigin: function transformOrigin() {
      var _arrowPosition = this.arrowPosition,
          _arrowPosition$x = _arrowPosition.x,
          x = _arrowPosition$x === undefined ? 0 : _arrowPosition$x,
          _arrowPosition$y = _arrowPosition.y,
          y = _arrowPosition$y === undefined ? 0 : _arrowPosition$y,
          _arrowPosition$pos = _arrowPosition.pos,
          pos = _arrowPosition$pos === undefined ? 'top' : _arrowPosition$pos;

      var _origins = [];
      switch (pos) {
        case 'top':
        case 'bottom':
          _origins = [x < 0 ? 'right' : 'left', pos];
          break;
        case 'left':
        case 'right':
          _origins = [pos, y < 0 ? 'bottom' : 'top'];
          break;
      }
      return _origins.join(' ');
    },
    contentTransform: function contentTransform() {
      var _arrowPosition$pos2 = this.arrowPosition.pos,
          pos = _arrowPosition$pos2 === undefined ? 'top' : _arrowPosition$pos2;
      var _arrowPosition2 = this.arrowPosition,
          _arrowPosition2$x = _arrowPosition2.x,
          x = _arrowPosition2$x === undefined ? 0 : _arrowPosition2$x,
          _arrowPosition2$y = _arrowPosition2.y,
          y = _arrowPosition2$y === undefined ? 0 : _arrowPosition2$y;

      var _translates = ['scale(0)'];
      if (x >= 0 && x < 22) {
        x = 22;
      } else if (x < 0 && x > -22) {
        x = -22;
      }
      if (y >= 0 && y < 22) {
        y = 22;
      } else if (y < 0 && y > -22) {
        y = -22;
      }
      switch (pos) {
        case 'top':
        case 'bottom':
          _translates[1] = 'translateX(' + (x < 0 ? x - 15 : x + 15) + 'px)';
          break;
        case 'left':
        case 'right':
          _translates[1] = 'translateY(' + (y < 0 ? y - 15 : y + 15) + 'px)';
          break;
      }
      return _translates.join(' ');
    },
    contentStyle: function contentStyle() {
      var _position = this.position,
          _position$x = _position.x,
          x = _position$x === undefined ? 0 : _position$x,
          _position$y = _position.y,
          y = _position$y === undefined ? 0 : _position$y;

      var style = {};
      x < 0 ? style.right = -x + 'px' : style.left = x + 'px';
      y < 0 ? style.bottom = -y + 'px' : style.top = y + 'px';
      style.opacity = this.hasAnimation || !this.showIn ? '0' : '1';
      style.transform = this.hasAnimation || !this.showIn ? this.contentTransform : 'scale(1)';
      style.transformOrigin = this.transformOrigin;
      return style;
    },
    arrowStyle: function arrowStyle() {
      var _arrowPosition3 = this.arrowPosition,
          _arrowPosition3$x = _arrowPosition3.x,
          x = _arrowPosition3$x === undefined ? 0 : _arrowPosition3$x,
          _arrowPosition3$y = _arrowPosition3.y,
          y = _arrowPosition3$y === undefined ? 0 : _arrowPosition3$y;
      var _arrowPosition$pos3 = this.arrowPosition.pos,
          pos = _arrowPosition$pos3 === undefined ? 'top' : _arrowPosition$pos3;

      var style = {};
      switch (pos) {
        case 'top':
          style.top = '6px';
        case 'bottom':
          //eslint-disable-line
          !style.top && (style.bottom = '6px');
          style.transform = 'scaleX(0.8) rotate(45deg)';
          if (x >= 0 && x < 22) {
            x = 22;
          } else if (x < 0 && x > -22) {
            x = -22;
          }
          x < 0 ? style.right = -x + 'px' : style.left = x + 'px';
          break;
        case 'left':
          style.left = '6px';
        case 'right':
          //eslint-disable-line
          !style.left && (style.right = '6px');
          style.transform = 'scaleY(0.8) rotate(45deg)';
          if (y >= 0 && y < 22) {
            y = 22;
          } else if (y < 0 && y > -22) {
            y = -22;
          }
          y < 0 ? style.bottom = -y + 'px' : style.top = y + 'px';
          break;
        default:
          break;
      }
      return style;
    }
  },
  methods: {
    wxcPopoverShow: function wxcPopoverShow() {
      var _this = this;

      if (this.animationLock) {
        return;
      }
      this.show = true;
      if (this.hasAnimation) {
        setTimeout(function () {
          return _this.wxcPopoverAnimationShow();
        }, 40);
      } else {
        setTimeout(function () {
          return _this.showIn = true;
        }, 40);
      }
    },

    /**
    * smooth in
    **/
    wxcPopoverAnimationShow: function wxcPopoverAnimationShow() {
      var _this2 = this;

      var popoverEl = this.$refs['wxc-popover'];
      var coverEl = this.$refs['wxc-cover'];
      if (!coverEl || !popoverEl) {
        return;
      }
      this.setAnimationLock();
      var a1End = false;
      var a2End = false;
      animation.transition(popoverEl, {
        styles: {
          opacity: 1,
          transform: 'scale(1)',
          transformOrigin: this.transformOrigin
        },
        delay: 0,
        duration: 250,
        timingFunction: 'ease-out'
      }, function (e) {
        a1End = true;
        if (a1End && a2End) {
          _this2.animationLock = false;
        }
      });

      animation.transition(coverEl, {
        styles: {
          opacity: 1
        },
        delay: 0,
        duration: 250,
        timingFunction: 'ease-in'
      }, function (e) {
        a2End = true;
        if (a1End && a2End) {
          _this2.animationLock = false;
        }
      });
    },
    wxcButtonClicked: function wxcButtonClicked(index, key) {
      if (this.animationLock) {
        return;
      }
      this.$emit('wxcPopoverButtonClicked', { key: key, index: index });
      this.hideAction();
    },

    /**
       * 隐藏操作
       */
    hideAction: function hideAction() {
      var _this3 = this;

      if (this.animationLock) {
        return;
      }
      if (this.hasAnimation) {
        this.setAnimationLock();
        var popoverEl = this.$refs['wxc-popover'];
        var coverEl = this.$refs['wxc-cover'];
        if (!popoverEl || !coverEl) {
          return;
        }
        var a1End = false;
        var a2End = false;
        animation.transition(popoverEl, {
          styles: {
            opacity: 0,
            transform: this.contentTransform,
            transformOrigin: this.transformOrigin
          },
          duration: 250
        }, function () {
          a1End = true;
          if (a1End && a2End) {
            _this3.show = false;
            _this3.showIn = false;
            _this3.animationLock = false;
          }
        });
        animation.transition(coverEl, {
          styles: {
            opacity: 0
          },
          duration: 250
        }, function () {
          a2End = true;
          if (a1End && a2End) {
            _this3.show = false;
            _this3.showIn = false;
            _this3.animationLock = false;
          }
        });
      } else {
        this.show = false;
        this.showIn = false;
      }
    },

    /**
       * 设置动画锁
       */
    setAnimationLock: function setAnimationLock() {
      this.animationLock = true;
    }
  }
};

/***/ }),
/* 18 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    staticClass: ["wrapper"]
  }, [(_vm.show) ? _c('div', {
    ref: "wxc-cover",
    staticClass: ["g-cover"],
    style: _vm.coverStyle,
    on: {
      "click": _vm.hideAction
    }
  }) : _vm._e(), (_vm.show && _vm.buttons.length) ? _c('div', {
    ref: "wxc-popover",
    staticClass: ["g-popover"],
    style: _vm.contentStyle
  }, [_c('div', {
    staticClass: ["u-popover-arrow"],
    style: _vm.arrowStyle
  }), _c('div', {
    staticClass: ["u-popover-inner"]
  }, _vm._l((_vm.buttons), function(item, i) {
    return _c('div', {
      key: i,
      class: ['i-btn', i === _vm.buttons.length - 1 ? 'i-btn-noborder' : ''],
      on: {
        "click": function($event) {
          _vm.wxcButtonClicked(i, item.key)
        }
      }
    }, [(item.icon) ? _c('image', {
      staticClass: ["btn-icon"],
      attrs: {
        "src": item.icon
      }
    }) : _vm._e(), _c('text', {
      staticClass: ["btn-text"],
      style: _vm.textStyle
    }, [_vm._v(_vm._s(item.text))])])
  }))]) : _vm._e()])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(20)
)

/* script */
__vue_exports__ = __webpack_require__(21)

/* template */
var __vue_template__ = __webpack_require__(22)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-minibar\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-e026d130"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 20 */
/***/ (function(module, exports) {

module.exports = {
  "wxc-minibar": {
    "width": "750",
    "height": "90",
    "flexDirection": "row",
    "justifyContent": "space-between",
    "alignItems": "center"
  },
  "left": {
    "width": "180",
    "paddingLeft": "32"
  },
  "middle-title": {
    "fontSize": "30",
    "color": "#ffffff",
    "height": "36",
    "lineHeight": "34"
  },
  "right": {
    "width": "180",
    "paddingRight": "32",
    "alignItems": "flex-end"
  },
  "left-button": {
    "width": "21",
    "height": "36"
  },
  "right-button": {
    "width": "32",
    "height": "32"
  },
  "icon-text": {
    "fontSize": "28",
    "color": "#ffffff"
  }
}

/***/ }),
/* 21 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

var Navigator = weex.requireModule('navigator');
exports.default = {
  props: {
    backgroundColor: {
      type: String,
      default: '#FFC900'
    },
    leftButton: {
      type: String,
      default: 'https://gw.alicdn.com/tfs/TB1x18VpwMPMeJjy1XdXXasrXXa-21-36.png'
    },
    textColor: {
      type: String,
      default: '#3D3D3D'
    },
    rightButton: {
      type: String,
      default: ''
    },
    title: {
      type: String,
      default: '标题'
    },
    leftText: {
      type: String,
      default: ''
    },
    rightText: {
      type: String,
      default: ''
    },
    useDefaultReturn: {
      type: Boolean,
      default: true
    },
    show: {
      type: Boolean,
      default: true
    },
    barStyle: {
      type: Object
    }
  },
  computed: {
    newBarStyle: function newBarStyle() {
      var backgroundColor = this.backgroundColor,
          barStyle = this.barStyle;

      return _extends({
        backgroundColor: backgroundColor
      }, barStyle);
    }
  },
  methods: {
    leftButtonClicked: function leftButtonClicked() {
      if (this.useDefaultReturn) {
        Navigator.pop({}, function (e) {});
      }
      this.$emit('wxcMinibarLeftButtonClicked', {});
    },
    rightButtonClicked: function rightButtonClicked() {
      var hasRightContent = this.rightText || this.rightButton || this.$slots && this.$slots.right;
      hasRightContent && this.$emit('wxcMinibarRightButtonClicked', {});
    }
  }
};

/***/ }),
/* 22 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return (_vm.show) ? _c('div', {
    staticClass: ["wxc-minibar"],
    style: _vm.newBarStyle
  }, [_c('div', {
    staticClass: ["left"],
    attrs: {
      "ariaLabel": "返回",
      "accessible": true
    },
    on: {
      "click": _vm.leftButtonClicked
    }
  }, [_vm._t("left", [(_vm.leftButton && !_vm.leftText) ? _c('image', {
    staticClass: ["left-button"],
    attrs: {
      "src": _vm.leftButton
    }
  }) : _vm._e(), (_vm.leftText) ? _c('text', {
    staticClass: ["icon-text"],
    style: {
      color: _vm.textColor
    }
  }, [_vm._v(_vm._s(_vm.leftText))]) : _vm._e()])], 2), _vm._t("middle", [_c('text', {
    staticClass: ["middle-title"],
    style: {
      color: _vm.textColor
    }
  }, [_vm._v(_vm._s(_vm.title))])]), _c('div', {
    staticClass: ["right"],
    on: {
      "click": _vm.rightButtonClicked
    }
  }, [_vm._t("right", [(_vm.rightButton && !_vm.rightText) ? _c('image', {
    staticClass: ["right-button"],
    attrs: {
      "src": _vm.rightButton,
      "ariaHidden": true
    }
  }) : _vm._e(), (_vm.rightText) ? _c('text', {
    staticClass: ["icon-text"],
    style: {
      color: _vm.textColor
    }
  }, [_vm._v(_vm._s(_vm.rightText))]) : _vm._e()])], 2)], 2) : _vm._e()
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var Nat = {};

if (weex && weex.requireModule || typeof __weex_define__ === 'function') {
	var camera = __webpack_require__(24);
	var communication = __webpack_require__(25);
	var geolocation = __webpack_require__(26);
	var media = __webpack_require__(27);
	var modal = __webpack_require__(31);
	var recorder = __webpack_require__(32);
	var network = __webpack_require__(33);
	var sensor = __webpack_require__(36);
	var device = __webpack_require__(39);
	var Navigator = __webpack_require__(46);
	var alipay = __webpack_require__(47);
	var wechat = __webpack_require__(48);

	// camera
	if (camera) {
		Nat.camera = camera;
	}

	// communication
	if (communication) {
		Nat.call = communication.call;
		Nat.sms = communication.sms;
		Nat.mail = communication.mail;
	}

	// geolocation
	if (geolocation) {
		Nat.geolocation = geolocation;
	}

	// media
	if (media) {
		Nat.audio = media.audio;
		Nat.image = media.image;
		Nat.video = media.video;
	}

	// recorder
	if (recorder) {
		Nat.recorder = recorder;
	}

	// modal
	if (modal) {
		Nat.alert = modal.alert;
		Nat.confirm = modal.confirm;
		Nat.prompt = modal.prompt;
		Nat.toast = modal.toast;
		Nat.actionSheet = modal.actionSheet;
	}

	// network
	if (network) {
		Nat.fetch = network.stream.fetch;
		Nat.download = network.transfer.download;
		Nat.upload = network.transfer.upload;
		Nat.websocket = network.websocket;
	}

	// sensor
	if (sensor) {
		Nat.accelerometer = sensor.accelerometer;
		Nat.compass = sensor.compass;
	}

	// device
	if (device) {
		Nat.device = device.info;
		Nat.battery = device.battery;
		Nat.network = device.network;
		Nat.screen = device.screen;
		Nat.vibrate = device.vibration.vibrate;
		Nat.volume = device.volume;
	}

	// navigator
	if (Navigator) {
		Nat.navigator = Navigator;
	}

	// alipay
	if (alipay) {
		Nat.alipay = alipay;
	}

	// wechat
	if (wechat) {
		Nat.wechat = wechat;
	}
}

module.exports = Nat;

/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var camera = void 0;

if (weex && weex.requireModule) {
	camera = weex.requireModule('nat/camera');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		camera = __weex_require__('@weex-module/nat/camera');
	});
}

// launch

var launch = function launch(opts) {
	camera.launch();
};

// captureImage (snap)

var captureImage = function captureImage(opts, cb) {
	opts = opts || {};

	return new Promise(function (resolve, reject) {
		camera.captureImage({
			width: opts.width || null,
			height: opts.height || null
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// captureVideo (record)

var captureVideo = function captureVideo(opts, cb) {
	opts = opts || {};

	return new Promise(function (resolve, reject) {
		camera.captureVideo({
			width: opts.width || null,
			height: opts.height || null
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	launch: launch,
	captureImage: captureImage,
	captureVideo: captureVideo
};

/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _utils = __webpack_require__(4);

var _utils2 = _interopRequireDefault(_utils);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var communication = void 0;

if (weex && weex.requireModule) {
	communication = weex.requireModule('nat/communication');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		communication = __weex_require__('@weex-module/nat/communication');
	});
}

// call

var call = function call(to, cb) {
	return new Promise(function (resolve, reject) {
		if (!to) {
			reject({
				code: 101040,
				message: 'CALL_MISSING_ARGUMENT'
			});
			return;
		} else if (!_utils2.default.isPhone(to)) {
			reject({
				code: 101050,
				message: 'CALL_INVALID_ARGUMENT',
				details: 'Invalid phone number: ' + to
			});
			return;
		}

		communication.call(to, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// sms

var sms = function sms(to, text, cb) {
	text = text || '';

	if (typeof text === 'function') {
		cb = text;
		text = '';
	}

	return new Promise(function (resolve, reject) {
		if (!to) {
			reject({
				code: 102040,
				message: 'SMS_MISSING_ARGUMENT'
			});
			return;
		}

		if (typeof to === 'string') {
			to = [to];
		}

		for (var i = 0; i < to.length; i++) {
			if (!_utils2.default.isPhone(to[i])) {
				reject({
					code: 102050,
					message: 'SMS_INVALID_ARGUMENT'
				});
				return;
			}
		}

		communication.sms(to, text, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// mail

var mail = function mail(to, opts, cb) {
	opts = opts || {};

	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		if (!to) {
			reject({
				code: 103040,
				message: 'MAIL_MISSING_ARGUMENT'
			});
			return;
		}

		if (typeof to === 'string') {
			to = [to];
		}

		for (var i = 0; i < to.length; i++) {
			if (!_utils2.default.isEmail(to[i])) {
				reject({
					code: 103050,
					message: 'MAIL_INVALID_ARGUMENT',
					details: 'Invalid emaill address: ' + to[i]
				});
				return;
			}
		}

		communication.mail(to, {
			subject: opts.subject || '',
			body: opts.body || '',
			attachments: opts.attachments || null
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

module.exports = {
	call: call,
	sms: sms,
	mail: mail
};

/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var geolocation = void 0;

if (weex && weex.requireModule) {
	geolocation = weex.requireModule('nat/geolocation');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		geolocation = __weex_require__('@weex-module/nat/geolocation');
	});
}

// get
var get = function get(opts, cb) {
	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		geolocation.get(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// watch

var watch = function watch(opts, cb) {
	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		geolocation.watch({
			maximumAge: opts.maximumAge || 0,
			timeout: opts.timeout || 10000,
			model: opts.model || 'highAccuracy'
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// clear watch

var clearWatch = function clearWatch(cb) {
	return new Promise(function (resolve, reject) {
		geolocation.clearWatch(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	get: get,
	watch: watch,
	clearWatch: clearWatch
};

/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _audio = __webpack_require__(28);

var _audio2 = _interopRequireDefault(_audio);

var _image = __webpack_require__(29);

var _image2 = _interopRequireDefault(_image);

var _video = __webpack_require__(30);

var _video2 = _interopRequireDefault(_video);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

module.exports = {
	audio: _audio2.default,
	image: _image2.default,
	video: _video2.default
};

/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var audio = void 0;

if (weex && weex.requireModule) {
	audio = weex.requireModule('nat/media/audio');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		audio = __weex_require__('@weex-module/nat/media/audio');
	});
}

// play
var play = function play(path, cb) {
	return new Promise(function (resolve, reject) {
		if (!path) {
			reject({
				code: 110040,
				message: 'MEDIA_MISSING_ARGUMENT'
			});
			return;
		}

		audio.play(path, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// pause

var pause = function pause(cb) {
	return new Promise(function (resolve, reject) {
		audio.pause(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// stop

var stop = function stop(cb) {
	return new Promise(function (resolve, reject) {
		audio.stop(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

module.exports = {
	play: play,
	pause: pause,
	stop: stop
};

/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var image = void 0;

if (weex && weex.requireModule) {
	image = weex.requireModule('nat/media/image');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		image = __weex_require__('@weex-module/nat/media/image');
	});
}

// pick
var pick = function pick(opts, cb) {
	opts = opts || {};

	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	opts.limit = opts.limit || 1;
	opts.quality = opts.quality && opts.quality < 100 ? parseInt(opts.quality) : 100;

	return new Promise(function (resolve, reject) {
		image.pick({
			limit: opts.limit,
			quality: opts.quality,
			width: opts.width || null,
			height: opts.height || null,
			showCamera: opts.showCamera || false
		}, function (ret) {
			if (ret === null) {
				return;
			}

			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// preview

var preview = function preview(files, opts, cb) {
	opts = opts || {};

	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		if (!files) {
			reject({
				code: 110040,
				message: 'MEDIA_MISSING_ARGUMENT'
			});
			return;
		}

		if (typeof files === 'string') {
			files = [files];
		}

		// style
		if (['dots', 'label', 'none'].indexOf(opts.style) < 0) {
			opts.style = 'dots';
		}

		if (opts.style === 'dots') {
			if (files.length > 9) {
				opts.style = 'label';
			} else if (files.length === 1) {
				opts.style = 'none';
			}
		}

		image.preview(files, {
			current: opts.current,
			style: opts.style
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// info

var info = function info(path, cb) {
	return new Promise(function (resolve, reject) {
		if (!path) {
			reject({
				code: 110040,
				message: 'MEDIA_MISSING_ARGUMENT'
			});
			return;
		}

		image.info(path, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// exif

var exif = function exif(path, cb) {
	return new Promise(function (resolve, reject) {
		if (!path) {
			reject({
				code: 110040,
				message: 'MEDIA_MISSING_ARGUMENT'
			});
			return;
		}

		image.exif(path, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	pick: pick,
	preview: preview,
	info: info,
	exif: exif
};

/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var video = void 0;

if (weex && weex.requireModule) {
	video = weex.requireModule('nat/media/video');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		video = __weex_require__('@weex-module/nat/media/video');
	});
}

// play
var play = function play(path, cb) {
	return new Promise(function (resolve, reject) {
		if (!path) {
			reject({
				code: 110040,
				message: 'MEDIA_MISSING_ARGUMENT'
			});
			return;
		}

		video.play(path, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// pause

var pause = function pause(cb) {
	return new Promise(function (resolve, reject) {
		video.pause(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// stop

var stop = function stop(cb) {
	return new Promise(function (resolve, reject) {
		video.stop(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

module.exports = {
	play: play,
	pause: pause,
	stop: stop
};

/***/ }),
/* 31 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var _utils = __webpack_require__(4);

var modal = void 0;

if (weex && weex.requireModule) {
	modal = weex.requireModule('nat/modal');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		modal = __weex_require__('@weex-module/nat/modal');
	});
}
// alert

var Alert = function Alert(opts, cb) {
	return new Promise(function (resolve, reject) {
		if (typeof opts === 'string') {
			opts = {
				message: opts
			};
		}

		opts = opts || {};

		if (_utils.isNative) {
			modal.alert({
				title: opts.title || '',
				message: opts.message || '',
				okButton: opts.okButton || 'OK'
			}, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve();
					if (typeof cb === 'function') cb(null);
				}
			});
		} else {
			window.alert(opts.message);
			resolve();
		}
	});
};

// confirm

var Confirm = function Confirm(opts, cb) {
	return new Promise(function (resolve, reject) {
		if (typeof opts === 'string') {
			opts = {
				message: opts
			};
		}

		opts = opts || {};

		if (_utils.isNative) {
			modal.confirm({
				title: opts.title || '',
				message: opts.message || '',
				okButton: opts.okButton || 'OK',
				cancelButton: opts.cancelButton || 'Cancel'
			}, function (ret) {
				if (typeof ret === 'undefined') {
					ret = {
						error: 'unknow error, please report to natjs team'
					};
				}

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		} else {
			var c = window.confirm(opts.message);
			resolve(c);
		}
	});
};

// prompt

var Prompt = function Prompt(opts, cb) {
	return new Promise(function (resolve, reject) {
		if (typeof opts === 'string') {
			opts = {
				message: opts
			};
		}

		opts = opts || {};

		if (_utils.isNative) {
			modal.prompt({
				title: opts.title || '',
				message: opts.message || '',
				text: opts.text || '',
				okButton: opts.okButton || 'OK',
				cancelButton: opts.cancelButton || 'Cancel'
			}, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		} else {
			var p = window.prompt(opts.message || '', opts.text || '');

			resolve({
				result: p && p.length,
				data: p
			});
		}
	});
};

// toast

var Toast = function Toast(opts, cb) {
	return new Promise(function (resolve, reject) {
		if (typeof opts === 'string') {
			opts = {
				message: opts
			};
		}

		opts = opts || {};

		// position
		if (['top', 'middle', 'bottom'].indexOf(opts.position) < 0) {
			opts.position = 'bottom';
		}

		if (_utils.isNative) {
			modal.toast({
				message: opts.message || '',
				duration: opts.duration || 3000,
				position: opts.position
			}, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve();
					if (typeof cb === 'function') cb(null);
				}
			});
		} else {
			window.alert(opts.message);
			resolve();
		}
	});
};

var actionSheet = {
	show: function show(opts, cb) {
		return new Promise(function (resolve, reject) {
			opts = opts || {};

			if (!Array.isArray(opts.options) || !opts.options.length) {
				reject({
					code: 145050,
					message: 'ACTIONSHEET_INVALID_ARGUMENT'
				});
				return;
			}

			var options = opts.options.map(function (item) {
				if (['string', 'number'].includes(typeof item === 'undefined' ? 'undefined' : _typeof(item))) {
					return {
						title: item
					};
				}
				return item;
			});

			if (_utils.isNative) {
				modal.showActionSheet({
					title: opts.title,
					options: options
				}, function (ret) {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				});
			} else {
				resolve();
			}
		});
	}
};

module.exports = {
	alert: Alert,
	confirm: Confirm,
	prompt: Prompt,
	toast: Toast,
	actionSheet: actionSheet
};

/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var recorder = void 0;

if (weex && weex.requireModule) {
	recorder = weex.requireModule('nat/recorder');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		recorder = __weex_require__('@weex-module/nat/recorder');
	});
}

// start
var start = function start(opts, cb) {
	opts = opts || {};

	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		// channel
		if (['stereo', 'mono'].indexOf(opts.channel) < 0) {
			opts.channel = 'stereo';
		}

		// quality
		if (['low', 'standard', 'high'].indexOf(opts.quality) < 0) {
			opts.quality = 'standard';
		}

		recorder.start({
			channel: opts.channel,
			quality: opts.quality
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// pause

var pause = function pause(cb) {
	return new Promise(function (resolve, reject) {
		recorder.pause(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve();
				if (typeof cb === 'function') cb(null);
			}
		});
	});
};

// stop

var stop = function stop(cb) {
	return new Promise(function (resolve, reject) {
		recorder.stop(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	start: start,
	pause: pause,
	stop: stop
};

/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _stream = __webpack_require__(34);

var _stream2 = _interopRequireDefault(_stream);

var _transfer = __webpack_require__(35);

var _transfer2 = _interopRequireDefault(_transfer);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

// import websocket from './websocket'
// import info from './info'

module.exports = {
	stream: _stream2.default,
	transfer: _transfer2.default
	// websocket,
	// info
};

/***/ }),
/* 34 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var _utils = __webpack_require__(4);

var stream = void 0;

if (weex && weex.requireModule) {
	stream = weex.requireModule('nat/stream');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		stream = __weex_require__('@weex-module/nat/stream');
	});
}

// fetch

var Fetch = function Fetch(url, opts, cb) {
	return new Promise(function (resolve, reject) {
		if (!url) {
			reject({
				code: 151040,
				message: 'FETCH_MISSING_ARGUMENT'
			});
			return;
		}

		if ((typeof url === 'undefined' ? 'undefined' : _typeof(url)) === 'object') {
			cb = opts;
			opts = url;
		} else if (typeof opts === 'function') {
			cb = opts;
			opts = {
				url: url
			};
		} else {
			opts = opts || {};
			opts.url = url;
		}

		// headers
		opts.headers = opts.headers || {};

		if (opts.headers['Content-Type'] && /application\/json/.test(opts.headers['Content-Type'])) {
			opts.type = 'json';
		}

		// method
		opts.method = opts.method ? opts.method.toUpperCase() : 'GET';

		if (['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD'].indexOf(opts.method) < 0) {
			reject({
				code: 151050,
				message: 'FETCH_INVALID_ARGUMENT',
				details: 'Unsupported request method'
			});
			return;
		}

		// type
		opts.type = opts.type ? opts.type.toLowerCase() : 'json';

		if (['json', 'jsonp', 'text'].indexOf(opts.type) < 0) {
			reject({
				code: 151050,
				message: 'FETCH_INVALID_ARGUMENT',
				details: 'Unsupported request type'
			});
			return;
		}

		// body
		if (_typeof(opts.body) === 'object') {
			if (opts.type === 'json' && opts.method !== 'GET') {
				opts.body = JSON.stringify(opts.body);
			} else {
				reject({
					code: 151050,
					message: 'FETCH_INVALID_ARGUMENT',
					details: 'Request body must be a string'
				});
				return;
			}
		}

		opts = {
			method: opts.method,
			url: opts.url,
			headers: opts.headers,
			type: opts.type,
			body: opts.body
		};

		if (_utils.isNative) {
			stream.fetch(opts, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					if (ret.ok && typeof ret.data === 'string') {
						switch (opts.type) {
							case 'json':
								ret.data = JSON.parse(ret.data);
								break;

							case 'jsonp':
								{
									var matched = ret.data.match(/^\s*?.*\((.*)\)\s*?$/);
									if (matched) {
										ret.data = JSON.parse(matched[1]);
									}
									break;
								}
						}
					}
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		} else {
			var _url = opts.url;
			delete opts.url;

			var _res = {};

			window.fetch(_url, opts).then(function (res) {
				_res = res;

				if (res.ok) {
					if (res.status === 204) {
						return null;
					} else {
						if (opts.type === 'json') {
							return res.json();
						} else {
							return res.text();
						}
					}
				} else {
					throw new Error(res.statusText);
				}
			}).then(function (data) {
				if (opts.type === 'jsonp') {
					var matched = data.match(/^\s*?.*\((.*)\)\s*?$/);
					if (matched) {
						data = JSON.parse(matched[1]);
					}
				}

				resolve({
					data: data,
					headers: _res.headers,
					ok: _res.ok,
					redirected: _res.redirected,
					status: _res.status,
					statusText: _res.statusText
				});
			}).catch(function (e) {
				reject(e);
				if (typeof cb === 'function') cb(e, null);
			});
		}
	});
};

module.exports = {
	fetch: Fetch
};

/***/ }),
/* 35 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var transfer = void 0;

if (weex && weex.requireModule) {
	transfer = weex.requireModule('nat/transfer');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		transfer = __weex_require__('@weex-module/nat/transfer');
	});
}

// download

var download = function download(url, opts, hooks, cb) {
	return new Promise(function (resolve, reject) {
		if (!url) {
			reject({
				code: 151040,
				message: 'DOWNLOAD_MISSING_ARGUMENT'
			});
			return;
		}

		if (typeof opts === 'function') {
			cb = opts;
		} else if ((typeof opts === 'undefined' ? 'undefined' : _typeof(opts)) === 'object') {
			if (typeof hooks === 'function') {
				cb = hooks;
			}
			// todo
			if (typeof opts.onProgress === 'function') {
				hooks = opts;
			}
		}

		if ((typeof url === 'undefined' ? 'undefined' : _typeof(url)) === 'object') {
			opts = url;
		} else {
			opts = opts || {};
			opts.url = url;
		}

		// hooks
		hooks = hooks || {};

		transfer.download({
			url: opts.url,
			headers: opts.headers || {},
			target: opts.target
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else if (ret.progress) {
				if (typeof hooks.onProgress === 'function') {
					hooks.onProgress(ret.progress);
				}
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// upload

var upload = function upload(url, opts, hooks, cb) {
	return new Promise(function (resolve, reject) {
		if (!url) {
			reject({
				code: 151040,
				message: 'UPLOAD_MISSING_ARGUMENT'
			});
			return;
		}

		if (typeof opts === 'function') {
			cb = opts;
		} else if ((typeof opts === 'undefined' ? 'undefined' : _typeof(opts)) === 'object') {
			if (typeof hooks === 'function') {
				cb = hooks;
			}
			// todo
			if (typeof opts.onProgress === 'function') {
				hooks = opts;
			}
		}

		if ((typeof url === 'undefined' ? 'undefined' : _typeof(url)) === 'object') {
			opts = url;
		} else {
			opts = opts || {};
			opts.url = url;
		}

		// hooks
		hooks = hooks || {};

		// path
		if (!opts.path) {
			reject({
				code: 151040,
				message: 'UPLOAD_MISSING_ARGUMENT'
			});
			return;
		}

		// method
		opts.method = opts.method ? opts.method.toUpperCase() : 'POST';

		if (['POST', 'PUT', 'PATCH'].indexOf(opts.method) < 0) {
			reject({
				code: 151050,
				message: 'UPLOAD_INVALID_ARGUMENT',
				details: 'Unsupported request method'
			});
			return;
		}

		transfer.upload({
			url: opts.url,
			method: opts.method,
			path: opts.path,
			name: opts.name,
			headers: opts.headers || {},
			formData: opts.formData || {},
			mimeType: opts.mimeType
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else if (ret.progress) {
				if (typeof hooks.onProgress === 'function') {
					hooks.onProgress(ret.progress);
				}
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	download: download,
	upload: upload
};

/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _accelerometer = __webpack_require__(37);

var _accelerometer2 = _interopRequireDefault(_accelerometer);

var _compass = __webpack_require__(38);

var _compass2 = _interopRequireDefault(_compass);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

module.exports = {
	accelerometer: _accelerometer2.default,
	compass: _compass2.default
};

/***/ }),
/* 37 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var accelerometer = void 0;

if (weex && weex.requireModule) {
	accelerometer = weex.requireModule('nat/sensor/accelerometer');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		accelerometer = __weex_require__('@weex-module/nat/sensor/accelerometer');
	});
}

// get
var get = function get(opts, cb) {
	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		accelerometer.get(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// watch

var watch = function watch(opts, cb) {
	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		accelerometer.watch({
			interval: opts.interval || 32
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// clear watch

var clearWatch = function clearWatch(cb) {
	return new Promise(function (resolve, reject) {
		accelerometer.clearWatch(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	get: get,
	watch: watch,
	clearWatch: clearWatch
};

/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var compass = void 0;

if (weex && weex.requireModule) {
	compass = weex.requireModule('nat/sensor/compass');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		compass = __weex_require__('@weex-module/nat/sensor/compass');
	});
}

// get
var get = function get(opts, cb) {
	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		compass.get(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// watch

var watch = function watch(opts, cb) {
	if (typeof opts === 'function') {
		cb = opts;
		opts = {};
	}

	return new Promise(function (resolve, reject) {
		compass.watch({
			interval: opts.interval || 32
		}, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// clear watch

var clearWatch = function clearWatch(cb) {
	return new Promise(function (resolve, reject) {
		compass.clearWatch(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	get: get,
	watch: watch,
	clearWatch: clearWatch
};

/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _info = __webpack_require__(40);

var _info2 = _interopRequireDefault(_info);

var _battery = __webpack_require__(41);

var _battery2 = _interopRequireDefault(_battery);

var _network = __webpack_require__(42);

var _network2 = _interopRequireDefault(_network);

var _screen = __webpack_require__(43);

var _screen2 = _interopRequireDefault(_screen);

var _vibration = __webpack_require__(44);

var _vibration2 = _interopRequireDefault(_vibration);

var _volume = __webpack_require__(45);

var _volume2 = _interopRequireDefault(_volume);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

module.exports = {
	info: _info2.default,
	battery: _battery2.default,
	network: _network2.default,
	screen: _screen2.default,
	vibration: _vibration2.default,
	volume: _volume2.default
};

/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var device = void 0;

if (weex && weex.requireModule) {
	device = weex.requireModule('nat/device/info');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		device = __weex_require__('@weex-module/nat/device/info');
	});
}

// info

var info = function info(cb) {
	return new Promise(function (resolve, reject) {
		device.info(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	info: info
};

/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var battery = void 0;

if (weex && weex.requireModule) {
	battery = weex.requireModule('nat/device/battery');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		battery = __weex_require__('@weex-module/nat/device/battery');
	});
}

// status

var status = function status(cb) {
	return new Promise(function (resolve, reject) {
		battery.status(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	status: status
};

/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var network = void 0;

if (weex && weex.requireModule) {
	network = weex.requireModule('nat/device/network');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		network = __weex_require__('@weex-module/nat/device/network');
	});
}

// status

var status = function status(cb) {
	return new Promise(function (resolve, reject) {
		network.status(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	status: status
};

/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var screen = void 0;

if (weex && weex.requireModule) {
	screen = weex.requireModule('nat/device/screen');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		screen = __weex_require__('@weex-module/nat/device/screen');
	});
}

// brightness

var brightness = {
	get: function get(cb) {
		return new Promise(function (resolve, reject) {
			screen.getBrightness(function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	},

	set: function set(brightness, cb) {
		return new Promise(function (resolve, reject) {
			screen.setBrightness(brightness, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	}

	// orientation

};var orientation = {
	status: function status(cb) {
		return new Promise(function (resolve, reject) {
			screen.getOrientation(function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	},

	lock: function lock(orientation, cb) {
		if (typeof orientation === 'function') {
			cb = orientation;
			orientation = {};
		}

		// orientation
		if (['portrait-primary', 'portrait-secondary', 'landscape-primary', 'landscape-secondary', 'portrait', // either portrait-primary or portrait-secondary.
		'landscape', // either landscape-primary or landscape-secondary.
		'any' // All orientations are supported (unlocked orientation)
		].indexOf(orientation) < 0) {
			orientation = 'any';
		}

		return new Promise(function (resolve, reject) {
			screen.lockOrientation(orientation, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	},

	unlock: function unlock(cb) {
		return new Promise(function (resolve, reject) {
			screen.unlockOrientation(function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	}

	// info

};var info = function info(cb) {
	return new Promise(function (resolve, reject) {
		screen.info(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	brightness: brightness,
	orientation: orientation,
	info: info
};

/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var vibration = void 0;

if (weex && weex.requireModule) {
	vibration = weex.requireModule('nat/device/vibration');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		vibration = __weex_require__('@weex-module/nat/device/vibration');
	});
}

// vibrate

var vibrate = function vibrate(time, cb) {
	if (typeof time === 'function') {
		cb = time;
		time = {};
	}

	return new Promise(function (resolve, reject) {
		vibration.vibrate(time || 500, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	vibrate: vibrate
};

/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var volume = void 0;

if (weex && weex.requireModule) {
	volume = weex.requireModule('nat/device/volume');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		volume = __weex_require__('@weex-module/nat/device/volume');
	});
}

// get

var get = function get(cb) {
	return new Promise(function (resolve, reject) {
		volume.get(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// set

var set = function set(vol, cb) {
	return new Promise(function (resolve, reject) {
		volume.set(vol, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	get: get,
	set: set
};

/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var navigator = void 0;

if (weex && weex.requireModule) {
	navigator = weex.requireModule('nat/navigator');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		navigator = __weex_require__('@weex-module/nat/navigator');
	});
}

// push

var push = function push(opts, cb) {
	opts = opts || {};

	if (typeof opts === 'string') {
		opts = {
			url: opts
		};
	}

	return new Promise(function (resolve, reject) {
		navigator.push(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// pop
var pop = function pop(opts, cb) {
	return new Promise(function (resolve, reject) {
		navigator.pop(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// popToRoot
var popToRoot = function popToRoot(opts, cb) {
	opts = opts || {
		animated: true
	};

	if (typeof opts === 'function') {
		cb = opts;
		opts = {
			animated: true
		};
	}

	return new Promise(function (resolve, reject) {
		navigator.popToRoot(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// setTitle
var setTitle = function setTitle(opts, cb) {
	opts = opts || {};

	if (typeof opts === 'string') {
		opts = {
			title: opts
		};
	}

	return new Promise(function (resolve, reject) {
		navigator.setTitle(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// setColor
var setColor = function setColor(opts, cb) {
	opts = opts || {};

	if (typeof opts === 'string') {
		opts = {
			color: opts
		};
	}

	return new Promise(function (resolve, reject) {
		navigator.setColor(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// setBackgroundColor
var setBackgroundColor = function setBackgroundColor(opts, cb) {
	opts = opts || {};

	if (typeof opts === 'string') {
		opts = {
			backgroundColor: opts
		};
	}

	return new Promise(function (resolve, reject) {
		navigator.setBackgroundColor(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// setFontSize
var setFontSize = function setFontSize(opts, cb) {
	opts = opts || {};

	if (typeof opts === 'string' || typeof opts === 'number') {
		opts = {
			fontSize: opts
		};
	}

	return new Promise(function (resolve, reject) {
		navigator.setFontSize(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// init
var init = function init(opts, cb) {
	opts = opts || {};

	return new Promise(function (resolve, reject) {
		navigator.init(opts, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// hide
var hide = function hide(cb) {
	return new Promise(function (resolve, reject) {
		navigator.hide(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// show
var show = function show(cb) {
	return new Promise(function (resolve, reject) {
		navigator.show(function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	push: push,
	pop: pop,
	popToRoot: popToRoot,
	setTitle: setTitle,
	setColor: setColor,
	setBackgroundColor: setBackgroundColor,
	setFontSize: setFontSize,
	init: init,
	hide: hide,
	show: show
};

/***/ }),
/* 47 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var alipay = void 0;

if (weex && weex.requireModule) {
	alipay = weex.requireModule('nat/alipay');
} else if (typeof __weex_define__ === 'function') {
	__weex_define__('@weex-temp/x', function (__weex_require__) {
		alipay = __weex_require__('@weex-module/nat/alipay');
	});
}

// pay

var pay = function pay(params, cb) {
	return new Promise(function (resolve, reject) {
		if (!params) {
			reject({
				code: 201040,
				message: 'PAY_MISSING_ARGUMENT'
			});
			return;
		}

		params = params || {};

		if (!params.info) {
			reject({
				code: 201040,
				message: 'PAY_MISSING_ARGUMENT',
				details: '[params.info] is required'
			});
			return;
		}

		if (!params.scheme) {
			reject({
				code: 201040,
				message: 'PAY_MISSING_ARGUMENT',
				details: '[params.scheme] is required'
			});
			return;
		}

		alipay.pay(params, function (ret) {
			ret = ret || {};

			if (ret.error) {
				switch (ret.error.code) {
					case '8000':
						ret.error.msg = '正在处理中，支付结果未知';
						break;

					case '4000':
						ret.error.msg = '订单支付失败';
						break;

					case '5000':
						ret.error.msg = '重复请求';
						break;

					case '6001':
						ret.error.msg = '用户中途取消';
						break;

					case '6002':
						ret.error.msg = '网络连接出错';
						break;

					case '6004':
						ret.error.msg = '支付结果未知';
						break;
				}
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

// auth

var auth = function auth(params, cb) {
	return new Promise(function (resolve, reject) {
		if (!params) {
			reject({
				code: 201040,
				message: 'PAY_MISSING_ARGUMENT'
			});
			return;
		}

		params = params || {};

		if (!params.info) {
			reject({
				code: 201040,
				message: 'PAY_MISSING_ARGUMENT',
				details: '[params.info] is required'
			});
			return;
		}

		if (!params.scheme) {
			reject({
				code: 201040,
				message: 'PAY_MISSING_ARGUMENT',
				details: '[params.scheme] is required'
			});
			return;
		}

		alipay.auth(params, function (ret) {
			ret = ret || {};

			if (ret.error) {
				reject(ret.error);
				if (typeof cb === 'function') cb(ret.error, null);
			} else {
				resolve(ret);
				if (typeof cb === 'function') cb(null, ret);
			}
		});
	});
};

module.exports = {
	pay: pay,
	auth: auth
};

/***/ }),
/* 48 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var SHARE_TYPES = {
	'app': 1,
	'emotion': 2,
	'file': 3,
	'image': 4,
	'music': 5,
	'video': 6,
	'webpage': 7,
	'link': 7,
	'mini-program': 8
};

var SCENE_TYPES = {
	'session': 0,
	'timeline': 1,
	'favorite': 2
};

var __c = void 0;

var wechat = {
	get wechatModule() {
		if (__c) {
			return __c;
		} else if (weex && weex.requireModule) {
			__c = weex.requireModule('nat/wechat');
			return __c;
		}
	},

	// init
	init: function init(appId, cb) {
		var _this = this;

		return new Promise(function (resolve, reject) {
			if (!appId) {
				reject({
					code: 301040,
					message: 'MISSING_ARGUMENT',
					details: 'appId is required'
				});
				return;
			}

			_this.wechatModule.init(appId, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	},


	// checkInstalled
	checkInstalled: function checkInstalled(cb) {
		var _this2 = this;

		return new Promise(function (resolve, reject) {
			_this2.wechatModule.checkInstalled(function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	},


	/**
 	share
 		@params
 	- content
 		- title
 		- description (desc)
 		- type
 		- filePath
 		- thumbUrl
 		- dataUrl
 		- link
 	- scene
  */
	share: function share(params, cb) {
		var _this3 = this;

		return new Promise(function (resolve, reject) {
			if (!params) {
				reject({
					code: 301040,
					message: 'SHARE_MISSING_ARGUMENT'
				});
				return;
			}

			params = params || {};

			if (typeof params.scene === 'string') {
				params.scene = SCENE_TYPES[params.scene] || 0;
			} else {
				params.scene = params.scene || 0;
			}

			if (typeof params.content === 'string') {
				params.text = params.content;
				delete params.content;
			} else {
				var type = 0;
				params.content = params.content || {};

				if (!params.content.description && params.content.desc) {
					params.content.description = params.content.desc;
				}

				if (typeof params.content.type === 'string') {
					type = SHARE_TYPES[params.content.type];
					params.content.type = type;

					if (!type) {
						reject({
							code: 301041,
							message: 'SHARE_ARGUMENT_ERROR',
							details: 'unsupported share content type'
						});
						return;
					}
				}

				// app & file
				// filePath: local only
				if ([1, 3].includes(type) && !params.content.filePath) {
					reject({
						code: 301041,
						message: 'SHARE_ARGUMENT_ERROR',
						details: 'content.filePath is required'
					});
					return;
				}
				// emotion & image & music & video
				else if ([2, 4, 5, 6].includes(type) && !params.content.dataUrl) {
						reject({
							code: 301041,
							message: 'SHARE_ARGUMENT_ERROR',
							details: 'content.dataUrl is required'
						});
						return;
					}

				// add link (music & webpage)
				if ([5, 7].includes(type) && !params.content.link) {
					reject({
						code: 301041,
						message: 'SHARE_ARGUMENT_ERROR',
						details: 'content.link is required'
					});
					return;
				}
			}

			_this3.wechatModule.share(params, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					delete ret.status;
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	},


	// pay
	pay: function pay(params, cb) {
		var _this4 = this;

		return new Promise(function (resolve, reject) {
			if (!params) {
				reject({
					code: 301040,
					message: 'PAY_MISSING_ARGUMENT'
				});
				return;
			}

			// if (!params.appid) {
			// 	reject({
			// 		code: 301040,
			// 		message: 'PAY_MISSING_ARGUMENT',
			// 		details: '[params.appid] is required'
			// 	})
			// 	return
			// }

			_this4.wechatModule.pay(params, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					delete ret.status;
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	},


	// auth
	auth: function auth(params, cb) {
		var _this5 = this;

		return new Promise(function (resolve, reject) {
			if (!params) {
				reject({
					code: 301040,
					message: 'PAY_MISSING_ARGUMENT'
				});
				return;
			}

			params = params || {};

			if (!params.info) {
				reject({
					code: 301040,
					message: 'PAY_MISSING_ARGUMENT',
					details: '[params.info] is required'
				});
				return;
			}

			_this5.wechatModule.auth(params, function (ret) {
				ret = ret || {};

				if (ret.error) {
					reject(ret.error);
					if (typeof cb === 'function') cb(ret.error, null);
				} else {
					delete ret.status;
					resolve(ret);
					if (typeof cb === 'function') cb(null, ret);
				}
			});
		});
	}
};

module.exports = wechat;

/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(50)
)

/* script */
__vue_exports__ = __webpack_require__(51)

/* template */
var __vue_template__ = __webpack_require__(54)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-flag-input.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-280e5496"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 50 */
/***/ (function(module, exports) {

module.exports = {
  "container": {
    "marginTop": "10",
    "marginBottom": "10",
    "alignSelf": "left",
    "width": "250",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "container-content": {
    "textAlign": "center",
    "fontWeight": "900"
  },
  "container-del-btn": {
    "position": "absolute",
    "top": "14",
    "right": "-3",
    "width": "50"
  },
  "container-content-add-btn": {
    "position": "absolute",
    "width": "45",
    "left": "26"
  },
  "container-content-sub-btn": {
    "position": "absolute",
    "width": "42",
    "right": "23"
  }
}

/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _pathUtil = __webpack_require__(2);

var _compute = __webpack_require__(0);

var _common = __webpack_require__(1);

var modal = weex.requireModule('modal'); //
//
//
//
//
//
//
//
//
//
//
//
//
/**
 * 音符输入框
 */

exports.default = {
    name: "music-flag-input",
    props: {
        xValue: {
            type: String,
            default: '60'
        },
        yValue: {
            type: String,
            default: '60'
        },
        isClicked: {
            type: Boolean,
            default: false
        }
    },
    data: function data() {
        return {
            musicName: 'A1',
            isDelete: false,
            styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                    // height:getDeviceHeight(0.04)
                },
                containerContent: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                },
                addBtn: {
                    height: (0, _common.getFormatHeightPX)(50)
                },
                subBtn: {
                    height: (0, _common.getFormatHeightPX)(47)
                },
                delBtn: {
                    height: (0, _common.getFormatHeightPX)(54)
                }
            },
            img: {
                delBtn: (0, _pathUtil.getImagePath)('delete'),
                subBtn: (0, _pathUtil.getImagePath)('substract'),
                addBtn: (0, _pathUtil.getImagePath)('add')
            }
        };
    },

    watch: {
        xValue: function xValue(newVal) {
            this.musicName = (0, _compute.getMusicFlagByXYValue)(newVal, this.yValue).name;
        },
        yValue: function yValue(newVal) {
            this.musicName = (0, _compute.getMusicFlagByXYValue)(this.xValue, newVal).name;
        }
    },
    mounted: function mounted() {
        this.musicName = (0, _compute.getMusicFlagByXYValue)(this.xValue, this.yValue).name;
    },

    methods: {
        handleAdd: function handleAdd() {
            var _this = this;

            new Promise(function (resolve) {
                var item = (0, _compute.addEightByXYValue)(_this.xValue, _this.yValue);
                if (item) {
                    // this.xValue = item.xValue;
                    // this.yValue = item.yValue;
                    _this.$emit('update:xValue', item.xValue);
                    _this.$emit('update:yValue', item.yValue);
                    _this.musicName = (0, _compute.getMusicFlagByXYValue)(item.xValue, item.yValue).name;
                } else {
                    (0, _common.toast)('没有更高的八度了');
                }
            });
        },
        handleSub: function handleSub() {
            var item = (0, _compute.subEightByXYValue)(this.xValue, this.yValue);
            if (item) {
                this.$emit('update:xValue', item.xValue);
                this.$emit('update:yValue', item.yValue);
                this.musicName = (0, _compute.getMusicFlagByXYValue)(item.xValue, item.yValue).name;
            } else {
                (0, _common.toast)('没有更低的八度了');
            }
        },
        handleDelete: function handleDelete() {
            this.$emit('onDelete');
        }
    }
};

/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});
exports.getMusicNameValue = getMusicNameValue;
exports.getMusicNameByValue = getMusicNameByValue;

var _musicKeyValue = __webpack_require__(6);

function getMusicNameValue(musicName) {
    switch (musicName.toLowerCase()) {
        case 'c':
            return 1;
        case 'd':
            return 2;
        case 'e':
            return 3;
        case 'f':
            return 4;
        case 'g':
            return 5;
        case 'a':
            return 6;
        case 'b':
            return 7;
    }
}
//把数字转换为音名
//将音名转换为数字
function getMusicNameByValue(xValue) {
    switch (xValue.toLowerCase()) {
        case '1':
            return 'c';
        case '2':
            return 'd';
        case '3':
            return 'e';
        case '4':
            return 'f';
        case '5':
            return 'g';
        case '6':
            return 'a';
        case '7':
            return 'b';
    }
}

/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});
var triad = exports.triad = [{ "name": "大三和弦", "first": "大3度", "third": "小3度" }, { "name": "小三和弦", "first": "小3度", "third": "大3度" }, { "name": "增三和弦", "first": "大3度", "third": "大3度" }, { "name": "减三和弦", "first": "小3度", "third": "小3度" }];
var seventh = exports.seventh = [{ "name": "小小七和弦", "first": "小3度", "third": "大3度", "fifth": "小3度" }, { "name": "小大七和弦", "first": "小3度", "third": "大3度", "fifth": "大3度" }, { "name": "小增七和弦", "first": "小3度", "third": "大3度", "fifth": "增3度" }, { "name": "小减七和弦", "first": "小3度", "third": "大3度", "fifth": "减3度" }, { "name": "大小七和弦", "first": "大3度", "third": "小3度", "fifth": "小3度" }, { "name": "大大七和弦", "first": "大3度", "third": "小3度", "fifth": "大3度" }, { "name": "大增七和弦", "first": "大3度", "third": "小3度", "fifth": "增3度" }, { "name": "大减七和弦", "first": "大3度", "third": "小3度", "fifth": "减3度" }, { "name": "增小七和弦", "first": "大3度", "third": "大3度", "fifth": "减3度" }, { "name": "增大七和弦", "first": "大3度", "third": "大3度", "fifth": "小3度" }, { "name": "增增七和弦", "first": "大3度", "third": "大3度", "fifth": "大3度" }, { "name": "增减七和弦", "first": "大3度", "third": "大3度", "fifth": "倍减3度" }, { "name": "减小七和弦", "first": "小3度", "third": "小3度", "fifth": "大3度" }, { "name": "减大七和弦", "first": "小3度", "third": "小3度", "fifth": "增3度" }, { "name": "减增七和弦", "first": "小3度", "third": "小3度", "fifth": "倍增3度" }, { "name": "减减七和弦", "first": "小3度", "third": "小3度", "fifth": "小3度" }];

/***/ }),
/* 54 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [_c('div', {
    staticClass: ["container"],
    style: Object.assign({}, {'border-color': _vm.isClicked ? 'black' : 'grey',
      'border-width': _vm.isClicked ?
        '4px' : '1px'},
      _vm.styles.container)
  }, [_c('text', {
    staticClass: ["container-content"],
    style: _vm.styles.containerContent
  }, [_vm._v(_vm._s(_vm.musicName))]), _c('image', {
    staticClass: ["container-content-add-btn"],
    style: _vm.styles.addBtn,
    attrs: {
      "src": _vm.img.addBtn
    },
    on: {
      "click": _vm.handleAdd
    }
  }), _c('image', {
    staticClass: ["container-content-sub-btn"],
    style: _vm.styles.subBtn,
    attrs: {
      "src": _vm.img.subBtn
    },
    on: {
      "click": _vm.handleSub
    }
  })]), _c('image', {
    staticClass: ["container-del-btn"],
    style: _vm.styles.delBtn,
    attrs: {
      "src": _vm.img.delBtn
    },
    on: {
      "click": _vm.handleDelete
    }
  })])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(56)
)

/* script */
__vue_exports__ = __webpack_require__(57)

/* template */
var __vue_template__ = __webpack_require__(58)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\piano-key.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-1dd579a7"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 56 */
/***/ (function(module, exports) {

module.exports = {}

/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _wxcMinibar = __webpack_require__(5);

var _wxcMinibar2 = _interopRequireDefault(_wxcMinibar);

var _wxcPopover = __webpack_require__(3);

var _wxcPopover2 = _interopRequireDefault(_wxcPopover);

var _compute = __webpack_require__(0);

var _common = __webpack_require__(1);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

// 钢琴键
exports.default = {
    name: "piano-key",
    components: { WxcPopover: _wxcPopover2.default, WxcMinibar: _wxcMinibar2.default },
    props: {
        type: {
            type: String,
            default: 'white'
        },
        offsetLeft: {
            type: Number,
            default: 300
        },
        xValue: {
            type: String,
            default: '60'
        },
        yValue: {
            type: String,
            default: '60'
        }
    },
    data: function data() {
        return { styles: {
                pop: { y: (0, _common.getFormatHeightPX)(-200) },
                whiteKey: { 'padding-top': (0, _common.getDeviceHeight)(0.15), 'font-size': (0, _common.getDeviceHeight)(0.025) },
                key: { 'padding-top': (0, _common.getFormatHeightPX)(85), height: (0, _common.getDeviceHeight)(0.13), 'font-size': (0, _common.getDeviceHeight)(0.025) } }, musicName: '', info: {}, sameSounds: [] };
    },
    mounted: function mounted() {
        this.info = (0, _compute.getMusicFlagByMusicNameYValue)(this.xValue, this.yValue);
        this.musicName = this.info.name;
    },

    watch: {
        xValue: function xValue(newVal) {
            this.info = (0, _compute.getMusicFlagByMusicNameYValue)(newVal, this.yValue);
            this.musicName = this.info.name;
        },
        yValue: function yValue(newVal) {
            this.info = (0, _compute.getMusicFlagByMusicNameYValue)(this.xValue, newVal);
            this.musicName = this.info.name;
        }
    },
    methods: {
        handleSameSoundChoose: function handleSameSoundChoose(_ref) {
            var index = _ref.index;

            this.$emit('pressed', this.sameSounds[index].value);
        },

        //显示所有等音列表
        showSameSounds: function showSameSounds() {
            this.sameSounds = (0, _compute.getSameSoundKey)((0, _compute.getMusicFlagByXYValue)(this.info.xValue, this.info.yValue)).map(function (item) {
                return { text: item.name, value: item };
            });
            this.$refs['sameSoundsPopover'].wxcPopoverShow();
        },
        handlePressed: function handlePressed() {
            this.$emit('pressed', this.info);
        }
    }
};

/***/ }),
/* 58 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    on: {
      "longpress": _vm.showSameSounds,
      "click": _vm.handlePressed
    }
  }, [(_vm.type === 'white') ? _c('div', [_c('text', {
    staticStyle: {
      fontSize: "40px",
      fontWeight: "900",
      textAlign: "center"
    },
    style: _vm.styles.whiteKey
  }, [_vm._v(_vm._s(_vm.musicName))])]) : _vm._e(), (_vm.type === 'black') ? _c('div', [_c('text', {
    staticStyle: {
      fontSize: "40px",
      fontWeight: "900",
      color: "white",
      textAlign: "center"
    },
    style: _vm.styles.key
  }, [_vm._v(_vm._s(_vm.musicName))])]) : _vm._e(), _c('wxc-popover', {
    ref: "sameSoundsPopover",
    attrs: {
      "buttons": _vm.sameSounds,
      "position": {
        x: _vm.offsetLeft,
        y: _vm.styles.pop.y
      },
      ",": "",
      "arrowPosition": {
        pos: 'bottom'
      }
    },
    on: {
      "wxcPopoverButtonClicked": _vm.handleSameSoundChoose
    }
  })], 1)
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(60)
)

/* script */
__vue_exports__ = __webpack_require__(61)

/* template */
var __vue_template__ = __webpack_require__(62)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-interval-input.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-4a9e7464"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 60 */
/***/ (function(module, exports) {

module.exports = {
  "container": {
    "marginTop": "10",
    "marginBottom": "10",
    "alignSelf": "center",
    "width": "250",
    "marginLeft": "10",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "left": "10",
    "borderRadius": "20",
    "borderStyle": "solid",
    "width": "50",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  },
  "container-first": {
    "position": "absolute",
    "left": "25",
    "borderRadius": "40",
    "borderStyle": "solid",
    "width": "90",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "5",
    "bottom": "5"
  },
  "container-del-btn": {
    "position": "absolute",
    "top": "14",
    "right": "5",
    "width": "50"
  },
  "container-last": {
    "position": "absolute",
    "right": "25",
    "borderRadius": "40",
    "borderStyle": "solid",
    "width": "90",
    "justifyContent": "center",
    "alignItems": "center",
    "borderColor": "#000000",
    "borderWidth": "1",
    "top": "5",
    "bottom": "5"
  }
}

/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _compute = __webpack_require__(0);

var _pathUtil = __webpack_require__(2);

var _common = __webpack_require__(1);

exports.default = {
    name: "music-interval-input",
    props: {
        uuid: {
            type: String,
            default: ''
        },
        orderNumber: {
            type: String,
            default: '-1'
        }
    },
    data: function data() {
        return {
            firstArg: null,
            lastArg: null,
            img: {
                delBtn: (0, _pathUtil.getImagePath)('delete')
            },
            styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                orderFlag: {},
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                },
                delBtn: {
                    height: (0, _common.getFormatHeightPX)(55)
                }
            }
        };
    },

    methods: {
        getFirstArg: function getFirstArg() {
            var _this = this;

            this.$emit('pushFirstArg', function (firstArg, cb) {
                _this.firstArg = (0, _compute.getMusicFlagByXYValue)(firstArg.xValue, firstArg.yValue);
                var res = {
                    index: _this.orderNumber,
                    first: _this.firstArg,
                    uuid: _this.uuid,
                    last: _this.lastArg,
                    result: (0, _compute.computeInterval)(firstArg.xValue, firstArg.yValue, _this.lastArg.xValue, _this.lastArg.yValue)
                };
                if (_this.isFinished()) {
                    _this.$emit('onFinish', res);
                    cb(res);
                }
            });
        },
        isFinished: function isFinished() {
            return this.firstArg && this.lastArg;
        },
        getLastArg: function getLastArg() {
            var _this2 = this;

            this.$emit('pushLastArg', function (lastArg, cb) {
                _this2.lastArg = (0, _compute.getMusicFlagByXYValue)(lastArg.xValue, lastArg.yValue);
                var res = {
                    index: _this2.orderNumber,
                    first: _this2.firstArg,
                    last: _this2.lastArg,
                    uuid: _this2.uuid,
                    result: (0, _compute.computeInterval)(_this2.firstArg.xValue, _this2.firstArg.yValue, lastArg.xValue, lastArg.yValue)
                };
                if (_this2.isFinished()) {
                    _this2.$emit('onFinish', res);
                    cb(res);
                }
            });
        },
        handleDelete: function handleDelete() {
            this.$emit('onDelete');
        }
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/***/ }),
/* 62 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [_c('div', {
    staticClass: ["order-flag"],
    style: _vm.styles.orderFlag
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.orderNumber))])]), _c('div', {
    staticClass: ["container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('div', {
    staticClass: ["container-first"],
    on: {
      "click": _vm.getFirstArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.firstArg ? _vm.firstArg.name : '1音'))])]), _c('div', {
    staticClass: ["container-last"],
    on: {
      "click": _vm.getLastArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.lastArg ? _vm.lastArg.name : '2音'))])])]), _c('image', {
    staticClass: ["container-del-btn"],
    style: _vm.styles.delBtn,
    attrs: {
      "src": _vm.img.delBtn
    },
    on: {
      "click": _vm.handleDelete
    }
  })])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(64)
)

/* script */
__vue_exports__ = __webpack_require__(65)

/* template */
var __vue_template__ = __webpack_require__(66)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-result-show.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-62b4685e"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 64 */
/***/ (function(module, exports) {

module.exports = {
  "interval-container": {
    "marginTop": "10",
    "marginBottom": "10",
    "width": "480",
    "marginLeft": "65",
    "height": "60",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "left": "5",
    "borderRadius": "20",
    "borderStyle": "solid",
    "width": "45",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  },
  "interval-container-first": {
    "position": "absolute",
    "left": "20",
    "borderRadius": "40",
    "borderStyle": "solid",
    "width": "90",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "5",
    "bottom": "5"
  },
  "interval-container-and": {
    "position": "absolute",
    "left": "115",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "15",
    "fontSize": "28",
    "bottom": "5"
  },
  "interval-container-last": {
    "position": "absolute",
    "left": "155",
    "borderRadius": "40",
    "borderStyle": "solid",
    "width": "90",
    "justifyContent": "center",
    "alignItems": "center",
    "borderColor": "#000000",
    "borderWidth": "1",
    "top": "5",
    "bottom": "5"
  },
  "interval-container-result": {
    "position": "absolute",
    "left": "250",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "15",
    "bottom": "5"
  }
}

/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _common = __webpack_require__(1);

exports.default = {
    name: "music-result-show",
    props: {
        intervalResult: {
            type: Object,
            default: null
        }
    },
    data: function data() {
        return {
            styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                }
            }
        };
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

// 输出答案展示组件

/***/ }),
/* 66 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [(_vm.intervalResult !== null) ? _c('div', [_c('div', {
    staticClass: ["order-flag"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.intervalResult.index))])]), _c('div', {
    staticClass: ["interval-container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('div', {
    staticClass: ["interval-container-first"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.intervalResult.first.name))])]), _c('text', {
    staticClass: ["interval-container-and"],
    style: _vm.styles.containerFirstArg
  }, [_vm._v("与")]), _c('div', {
    staticClass: ["interval-container-last"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.intervalResult.last.name))])]), _c('text', {
    staticClass: ["interval-container-result"],
    style: _vm.styles.containerFirstArg
  }, [_vm._v("的音程为" + _vm._s(_vm.intervalResult.result))])])]) : _vm._e()])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(68)
)

/* script */
__vue_exports__ = __webpack_require__(69)

/* template */
var __vue_template__ = __webpack_require__(108)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-get-by-interval-input.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-561f1a65"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 68 */
/***/ (function(module, exports) {

module.exports = {
  "container": {
    "marginTop": "10",
    "marginBottom": "10",
    "alignSelf": "center",
    "width": "300",
    "marginLeft": "10",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "width": "50",
    "left": "10",
    "borderRadius": "20",
    "borderStyle": "solid",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  },
  "container-first": {
    "position": "absolute",
    "left": "15",
    "borderRadius": "40",
    "borderStyle": "solid",
    "width": "90",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "5",
    "bottom": "5"
  },
  "container-del-btn": {
    "position": "absolute",
    "top": "14",
    "right": "5",
    "width": "50"
  },
  "container-last": {
    "position": "absolute",
    "right": "11",
    "borderRadius": "40",
    "borderStyle": "solid",
    "width": "170",
    "justifyContent": "center",
    "alignItems": "center",
    "borderColor": "#000000",
    "borderWidth": "1",
    "top": "5",
    "bottom": "5"
  }
}

/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _wxcButton = __webpack_require__(70);

var _wxcButton2 = _interopRequireDefault(_wxcButton);

var _wxcRadio = __webpack_require__(76);

var _wxcRadio2 = _interopRequireDefault(_wxcRadio);

var _wxcMask = __webpack_require__(94);

var _wxcMask2 = _interopRequireDefault(_wxcMask);

var _wxcPopover = __webpack_require__(3);

var _wxcPopover2 = _interopRequireDefault(_wxcPopover);

var _musicInterval = __webpack_require__(7);

var _compute = __webpack_require__(0);

var _pathUtil = __webpack_require__(2);

var _common = __webpack_require__(1);

var _category = __webpack_require__(104);

var _category2 = _interopRequireDefault(_category);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = {
    name: "music-get-by-interval-input",
    components: { Category: _category2.default, WxcPopover: _wxcPopover2.default, WxcMask: _wxcMask2.default, WxcRadio: _wxcRadio2.default, WxcButton: _wxcButton2.default },
    props: {
        uuid: {
            type: String,
            default: ''
        },
        orderNumber: {
            type: String,
            default: '-1'
        }
    },
    data: function data() {
        return {
            intervalMenuVisible: false,
            interval: {
                position: null,
                name: null
            },
            //音程选择菜单
            intervalBtn: [],
            intervalPosition: { x: -33, y: 380 },
            intervalArrow: { pos: 'right' },
            //上方/下方音程选择菜单
            intervalPositionBtn: [{
                title: '上方',
                value: '上方'
            }, {
                title: '下方',
                value: '下方'
            }],
            intervalPositionPosition: { x: -33, y: 380 },
            intervalPositionArrow: { pos: 'right' },
            firstArg: null,
            img: {
                delBtn: (0, _pathUtil.getImagePath)('delete')
            }, styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                orderFlag: {},
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                },
                delBtn: {
                    height: (0, _common.getFormatHeightPX)(55)
                }
            }
        };
    },
    mounted: function mounted() {
        this.intervalBtn = _musicInterval.data.map(function (item) {
            return { value: item.result, title: item.result };
        });
    },

    methods: {
        confirmIntervalMenu: function confirmIntervalMenu() {
            this.intervalMenuVisible = false;
            // toast(this.interval)
            if (this.isFinished()) {
                this.$emit('onFinish', {
                    uuid: this.uuid,
                    index: this.orderNumber,
                    first: this.firstArg,
                    interval: this.interval,
                    result: (0, _compute.getByInterval)(this.interval.position, this.firstArg, this.interval.name).name
                });
            }
        },
        intervalPositionClicked: function intervalPositionClicked(_ref) {
            var value = _ref.value;

            this.interval.position = value;
        },
        intervalClicked: function intervalClicked(_ref2) {
            var value = _ref2.value;

            this.interval.name = value;
        },

        getFirstArg: function getFirstArg() {
            var _this = this;

            this.$emit('pushFirstArg', function (firstArg, cb) {
                _this.firstArg = (0, _compute.getMusicFlagByXYValue)(firstArg.xValue, firstArg.yValue);
                if (_this.isFinished()) {
                    _this.$emit('onFinish', {
                        uuid: _this.uuid,
                        index: _this.orderNumber,
                        first: _this.firstArg,
                        interval: _this.interval,
                        result: (0, _compute.getByInterval)(_this.interval.position, _this.firstArg, _this.interval.name).name
                    });
                }
            });
        },
        isFinished: function isFinished() {
            return this.firstArg && this.interval.name && this.interval.position;
        },
        popIntervalTypeMenu: function popIntervalTypeMenu() {
            this.intervalMenuVisible = true;
            // this.$refs['intervalTypeMenu'].wxcPopoverShow();
        },
        handleDelete: function handleDelete() {
            this.$emit('onDelete');
        }
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _index = __webpack_require__(71);

Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_index).default;
  }
});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(72)
)

/* script */
__vue_exports__ = __webpack_require__(73)

/* template */
var __vue_template__ = __webpack_require__(75)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-button\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-77c133fc"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 72 */
/***/ (function(module, exports) {

module.exports = {
  "wxc-btn": {
    "alignItems": "center",
    "justifyContent": "center",
    "borderRadius": "12",
    "opacity": 1
  },
  "wxc-btn-highlight": {
    "opacity:active": 0.8
  },
  "btn-text": {
    "textOverflow": "ellipsis",
    "lines": 1,
    "color": "#ffffff"
  }
}

/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

var _type = __webpack_require__(74);

exports.default = {
  props: {
    text: {
      type: String,
      default: '确认'
    },
    size: {
      type: String,
      default: 'full'
    },
    type: {
      type: String,
      default: 'red'
    },
    disabled: {
      type: Boolean,
      default: false
    },
    isHighlight: {
      type: Boolean,
      default: false
    },
    btnStyle: Object,
    textStyle: Object,
    disabledStyle: Object
  },
  computed: {
    mrBtnStyle: function mrBtnStyle() {
      var type = this.type,
          disabled = this.disabled,
          btnStyle = this.btnStyle,
          size = this.size,
          disabledStyle = this.disabledStyle;


      var mrBtnStyle = _extends({}, _type.STYLE_MAP[type], _type.BUTTON_STYLE_MAP[size], btnStyle);

      var disabledInStyle = { opacity: 0.2 };
      if (type === 'white') {
        disabledInStyle = { backgroundColor: 'rgba(0, 0, 0, 0.1)' };
      }

      return disabled ? _extends({}, mrBtnStyle, disabledInStyle, disabledStyle, {
        borderWidth: 0
      }) : mrBtnStyle;
    },
    mrTextStyle: function mrTextStyle() {
      var type = this.type,
          disabled = this.disabled,
          textStyle = this.textStyle,
          size = this.size;

      var mrTextStyle = _extends({}, _type.TEXT_STYLE_MAP[type], _type.TEXT_FONTSIZE_STYLE_MAP[size], textStyle);
      return disabled ? _extends({}, mrTextStyle, { color: '#FFFFFF' }) : mrTextStyle;
    }
  },
  methods: {
    onClicked: function onClicked(e) {
      var type = this.type,
          disabled = this.disabled;

      this.$emit('wxcButtonClicked', { e: e, type: type, disabled: disabled });
    }
  }
};

/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
var STYLE_MAP = exports.STYLE_MAP = {
  red: {
    backgroundColor: '#FF5000'
  },
  yellow: {
    backgroundColor: '#FFC900'
  },
  white: {
    backgroundColor: '#FFFFFF',
    borderColor: '#A5A5A5',
    borderWidth: '1px'
  },
  blue: {
    backgroundColor: '#0F8DE8'
  },
  green: {
    backgroundColor: '#19be6b'
  }
};

var TEXT_STYLE_MAP = exports.TEXT_STYLE_MAP = {
  red: {
    color: '#FFFFFF'
  },
  yellow: {
    color: '#FFFFFF'
  },
  blue: {
    color: '#FFFFFF'
  },
  white: {
    color: '#3D3D3D'
  },
  green: {
    color: '#FFFFFF'
  }
};

var BUTTON_STYLE_MAP = exports.BUTTON_STYLE_MAP = {
  full: {
    width: '702px',
    height: '88px'
  },
  big: {
    width: '339px',
    height: '70px'
  },
  medium: {
    width: '218px',
    height: '60px'
  },
  small: {
    width: '157px',
    height: '44px'
  }
};

var TEXT_FONTSIZE_STYLE_MAP = exports.TEXT_FONTSIZE_STYLE_MAP = {
  full: {
    fontSize: '36px'
  },
  big: {
    fontSize: '32px'
  },
  medium: {
    fontSize: '28px'
  },
  small: {
    fontSize: '24px'
  }
};

/***/ }),
/* 75 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    class: ['wxc-btn', _vm.isHighlight && !_vm.disabled && 'wxc-btn-highlight'],
    style: _vm.mrBtnStyle,
    attrs: {
      "accessible": true,
      "ariaLabel": _vm.text
    },
    on: {
      "click": _vm.onClicked
    }
  }, [_c('text', {
    staticClass: ["btn-text"],
    style: _vm.mrTextStyle
  }, [_vm._v(_vm._s(_vm.text))])])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _index = __webpack_require__(77);

Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_index).default;
  }
});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ }),
/* 77 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(78)
)

/* script */
__vue_exports__ = __webpack_require__(79)

/* template */
var __vue_template__ = __webpack_require__(93)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-radio\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-7ab2d872"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 78 */
/***/ (function(module, exports) {

module.exports = {}

/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _item = __webpack_require__(80);

var _item2 = _interopRequireDefault(_item);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = {
  components: { wxcRadio: _item2.default },
  props: {
    list: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    config: {
      type: Object,
      default: function _default() {
        return {};
      }
    }
  },
  data: function data() {
    return {
      checkedIndex: -1
    };
  },
  computed: {
    updateList: function updateList() {
      var checkedIndex = this.checkedIndex,
          list = this.list;

      var updateList = [];
      list && list.forEach(function (item, i) {
        item.checked = i === checkedIndex;
        updateList.push(item);
      });
      return updateList;
    }
  },
  watch: {
    list: function list(newList, oldList) {
      if (JSON.stringify(newList) !== JSON.stringify(oldList.map(function (v) {
        var title = v.title,
            value = v.value;

        return { title: title, value: value };
      }))) {
        this.checkedIndex = -1;
      }
      this.setListChecked(newList);
    }
  },
  created: function created() {
    this.setListChecked(this.list);
  },

  methods: {
    setListChecked: function setListChecked(list) {
      var _this = this;

      if (list && list.length > 0) {
        list.forEach(function (item, i) {
          item.checked && (_this.checkedIndex = i);
        });
      }
    },
    wxcRadioItemChecked: function wxcRadioItemChecked(i, e) {
      var oldIndex = this.checkedIndex;
      var _list$i = this.list[i],
          value = _list$i.value,
          title = _list$i.title;

      this.checkedIndex = i;
      this.$emit('wxcRadioListChecked', { value: value, title: title, oldIndex: oldIndex, index: i });
    }
  }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(81)
)

/* script */
__vue_exports__ = __webpack_require__(82)

/* template */
var __vue_template__ = __webpack_require__(92)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-radio\\item.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-6c5a49a4"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 81 */
/***/ (function(module, exports) {

module.exports = {
  "radio": {
    "width": "36",
    "height": "36"
  },
  "title-text": {
    "fontSize": "30",
    "height": "40",
    "lineHeight": "40"
  }
}

/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _wxcCell = __webpack_require__(83);

var _wxcCell2 = _interopRequireDefault(_wxcCell);

var _type = __webpack_require__(91);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

exports.default = {
  components: { WxcCell: _wxcCell2.default },
  props: {
    hasTopBorder: {
      type: Boolean,
      default: false
    },
    title: {
      type: String,
      require: true
    },
    value: {
      type: [String, Number, Object],
      require: true
    },
    disabled: {
      type: Boolean,
      default: false
    },
    checked: {
      type: Boolean,
      default: false
    },
    config: {
      type: Object,
      default: function _default() {
        return {};
      }
    }
  },
  data: function data() {
    return {
      icon: [_type.CHECKED, _type.DISABLED]
    };
  },
  computed: {
    radioIcon: function radioIcon() {
      var icon = this.icon,
          disabled = this.disabled,
          checked = this.checked,
          config = this.config;

      var mergeIcon = icon;
      config.checkedIcon && (mergeIcon[0] = config.checkedIcon);
      config.disabledIcon && (mergeIcon[1] = config.disabledIcon);
      return checked ? mergeIcon[disabled ? 1 : 0] : '';
    },
    backgroundColor: function backgroundColor() {
      var disabled = this.disabled;

      return disabled ? '#F2F3F4' : '#FFFFFF';
    },
    color: function color() {
      var disabled = this.disabled,
          checked = this.checked,
          config = this.config;

      var checkedColor = '#EE9900';
      config.checkedColor && (checkedColor = config.checkedColor);
      return checked && !disabled ? checkedColor : '#3D3D3D';
    }
  },
  methods: {
    wxcCellClicked: function wxcCellClicked() {
      var disabled = this.disabled,
          value = this.value;

      if (!disabled) {
        this.$emit('wxcRadioItemChecked', { value: value, disabled: disabled });
      }
    }
  }
};

/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _index = __webpack_require__(84);

Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_index).default;
  }
});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(85)
)

/* script */
__vue_exports__ = __webpack_require__(86)

/* template */
var __vue_template__ = __webpack_require__(90)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-cell\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-63bed4b2"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 85 */
/***/ (function(module, exports) {

module.exports = {
  "wxc-cell": {
    "flexDirection": "row",
    "alignItems": "center",
    "paddingLeft": "24",
    "paddingRight": "24",
    "backgroundColor": "#ffffff"
  },
  "cell-margin": {
    "marginBottom": "24"
  },
  "cell-title": {
    "flex": 1
  },
  "cell-indent": {
    "paddingBottom": "30",
    "paddingTop": "30"
  },
  "has-desc": {
    "paddingBottom": "18",
    "paddingTop": "18"
  },
  "cell-top-border": {
    "borderTopColor": "#e2e2e2",
    "borderTopWidth": "1"
  },
  "cell-bottom-border": {
    "borderBottomColor": "#e2e2e2",
    "borderBottomWidth": "1"
  },
  "cell-label-text": {
    "fontSize": "30",
    "color": "#666666",
    "width": "188",
    "marginRight": "10"
  },
  "cell-arrow-icon": {
    "width": "22",
    "height": "22"
  },
  "cell-content": {
    "color": "#333333",
    "fontSize": "30",
    "lineHeight": "40"
  },
  "cell-desc-text": {
    "color": "#999999",
    "fontSize": "24",
    "lineHeight": "30",
    "marginTop": "4",
    "marginRight": "30"
  },
  "extra-content-text": {
    "fontSize": "28",
    "color": "#999999",
    "marginRight": "4"
  }
}

/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _utils = __webpack_require__(8);

var _utils2 = _interopRequireDefault(_utils);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = {
  props: {
    label: {
      type: String,
      default: ''
    },
    title: {
      type: String,
      default: ''
    },
    extraContent: {
      type: String,
      default: ''
    },
    desc: {
      type: String,
      default: ''
    },
    link: {
      type: String,
      default: ''
    },
    hasTopBorder: {
      type: Boolean,
      default: false
    },
    hasMargin: {
      type: Boolean,
      default: false
    },
    hasBottomBorder: {
      type: Boolean,
      default: true
    },
    hasArrow: {
      type: Boolean,
      default: false
    },
    arrowIcon: {
      type: String,
      default: 'https://gw.alicdn.com/tfs/TB11zBUpwMPMeJjy1XbXXcwxVXa-22-22.png'
    },
    hasVerticalIndent: {
      type: Boolean,
      default: true
    },
    cellStyle: {
      type: Object,
      default: function _default() {
        return {};
      }
    },
    autoAccessible: {
      type: Boolean,
      default: true
    }
  },
  methods: {
    cellClicked: function cellClicked(e) {
      var link = this.link;
      this.$emit('wxcCellClicked', { e: e });
      link && _utils2.default.goToH5Page(link, true);
    }
  }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var required = __webpack_require__(88)
  , qs = __webpack_require__(89)
  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\/\//
  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\/\/)?([\S\s]*)/i
  , whitespace = '[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]'
  , left = new RegExp('^'+ whitespace +'+');

/**
 * Trim a given string.
 *
 * @param {String} str String to trim.
 * @public
 */
function trimLeft(str) {
  return (str ? str : '').toString().replace(left, '');
}

/**
 * These are the parse rules for the URL parser, it informs the parser
 * about:
 *
 * 0. The char it Needs to parse, if it's a string it should be done using
 *    indexOf, RegExp using exec and NaN means set as current value.
 * 1. The property we should set when parsing this value.
 * 2. Indication if it's backwards or forward parsing, when set as number it's
 *    the value of extra chars that should be split off.
 * 3. Inherit from location if non existing in the parser.
 * 4. `toLowerCase` the resulting value.
 */
var rules = [
  ['#', 'hash'],                        // Extract from the back.
  ['?', 'query'],                       // Extract from the back.
  function sanitize(address) {          // Sanitize what is left of the address
    return address.replace('\\', '/');
  },
  ['/', 'pathname'],                    // Extract from the back.
  ['@', 'auth', 1],                     // Extract from the front.
  [NaN, 'host', undefined, 1, 1],       // Set left over value.
  [/:(\d+)$/, 'port', undefined, 1],    // RegExp the back.
  [NaN, 'hostname', undefined, 1, 1]    // Set left over.
];

/**
 * These properties should not be copied or inherited from. This is only needed
 * for all non blob URL's as a blob URL does not include a hash, only the
 * origin.
 *
 * @type {Object}
 * @private
 */
var ignore = { hash: 1, query: 1 };

/**
 * The location object differs when your code is loaded through a normal page,
 * Worker or through a worker using a blob. And with the blobble begins the
 * trouble as the location object will contain the URL of the blob, not the
 * location of the page where our code is loaded in. The actual origin is
 * encoded in the `pathname` so we can thankfully generate a good "default"
 * location from it so we can generate proper relative URL's again.
 *
 * @param {Object|String} loc Optional default location object.
 * @returns {Object} lolcation object.
 * @public
 */
function lolcation(loc) {
  var globalVar;

  if (typeof window !== 'undefined') globalVar = window;
  else if (typeof global !== 'undefined') globalVar = global;
  else if (typeof self !== 'undefined') globalVar = self;
  else globalVar = {};

  var location = globalVar.location || {};
  loc = loc || location;

  var finaldestination = {}
    , type = typeof loc
    , key;

  if ('blob:' === loc.protocol) {
    finaldestination = new Url(unescape(loc.pathname), {});
  } else if ('string' === type) {
    finaldestination = new Url(loc, {});
    for (key in ignore) delete finaldestination[key];
  } else if ('object' === type) {
    for (key in loc) {
      if (key in ignore) continue;
      finaldestination[key] = loc[key];
    }

    if (finaldestination.slashes === undefined) {
      finaldestination.slashes = slashes.test(loc.href);
    }
  }

  return finaldestination;
}

/**
 * @typedef ProtocolExtract
 * @type Object
 * @property {String} protocol Protocol matched in the URL, in lowercase.
 * @property {Boolean} slashes `true` if protocol is followed by "//", else `false`.
 * @property {String} rest Rest of the URL that is not part of the protocol.
 */

/**
 * Extract protocol information from a URL with/without double slash ("//").
 *
 * @param {String} address URL we want to extract from.
 * @return {ProtocolExtract} Extracted information.
 * @private
 */
function extractProtocol(address) {
  address = trimLeft(address);
  var match = protocolre.exec(address);

  return {
    protocol: match[1] ? match[1].toLowerCase() : '',
    slashes: !!match[2],
    rest: match[3]
  };
}

/**
 * Resolve a relative URL pathname against a base URL pathname.
 *
 * @param {String} relative Pathname of the relative URL.
 * @param {String} base Pathname of the base URL.
 * @return {String} Resolved pathname.
 * @private
 */
function resolve(relative, base) {
  if (relative === '') return base;

  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))
    , i = path.length
    , last = path[i - 1]
    , unshift = false
    , up = 0;

  while (i--) {
    if (path[i] === '.') {
      path.splice(i, 1);
    } else if (path[i] === '..') {
      path.splice(i, 1);
      up++;
    } else if (up) {
      if (i === 0) unshift = true;
      path.splice(i, 1);
      up--;
    }
  }

  if (unshift) path.unshift('');
  if (last === '.' || last === '..') path.push('');

  return path.join('/');
}

/**
 * The actual URL instance. Instead of returning an object we've opted-in to
 * create an actual constructor as it's much more memory efficient and
 * faster and it pleases my OCD.
 *
 * It is worth noting that we should not use `URL` as class name to prevent
 * clashes with the global URL instance that got introduced in browsers.
 *
 * @constructor
 * @param {String} address URL we want to parse.
 * @param {Object|String} [location] Location defaults for relative paths.
 * @param {Boolean|Function} [parser] Parser for the query string.
 * @private
 */
function Url(address, location, parser) {
  address = trimLeft(address);

  if (!(this instanceof Url)) {
    return new Url(address, location, parser);
  }

  var relative, extracted, parse, instruction, index, key
    , instructions = rules.slice()
    , type = typeof location
    , url = this
    , i = 0;

  //
  // The following if statements allows this module two have compatibility with
  // 2 different API:
  //
  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments
  //    where the boolean indicates that the query string should also be parsed.
  //
  // 2. The `URL` interface of the browser which accepts a URL, object as
  //    arguments. The supplied object will be used as default values / fall-back
  //    for relative paths.
  //
  if ('object' !== type && 'string' !== type) {
    parser = location;
    location = null;
  }

  if (parser && 'function' !== typeof parser) parser = qs.parse;

  location = lolcation(location);

  //
  // Extract protocol information before running the instructions.
  //
  extracted = extractProtocol(address || '');
  relative = !extracted.protocol && !extracted.slashes;
  url.slashes = extracted.slashes || relative && location.slashes;
  url.protocol = extracted.protocol || location.protocol || '';
  address = extracted.rest;

  //
  // When the authority component is absent the URL starts with a path
  // component.
  //
  if (!extracted.slashes) instructions[3] = [/(.*)/, 'pathname'];

  for (; i < instructions.length; i++) {
    instruction = instructions[i];

    if (typeof instruction === 'function') {
      address = instruction(address);
      continue;
    }

    parse = instruction[0];
    key = instruction[1];

    if (parse !== parse) {
      url[key] = address;
    } else if ('string' === typeof parse) {
      if (~(index = address.indexOf(parse))) {
        if ('number' === typeof instruction[2]) {
          url[key] = address.slice(0, index);
          address = address.slice(index + instruction[2]);
        } else {
          url[key] = address.slice(index);
          address = address.slice(0, index);
        }
      }
    } else if ((index = parse.exec(address))) {
      url[key] = index[1];
      address = address.slice(0, index.index);
    }

    url[key] = url[key] || (
      relative && instruction[3] ? location[key] || '' : ''
    );

    //
    // Hostname, host and protocol should be lowercased so they can be used to
    // create a proper `origin`.
    //
    if (instruction[4]) url[key] = url[key].toLowerCase();
  }

  //
  // Also parse the supplied query string in to an object. If we're supplied
  // with a custom parser as function use that instead of the default build-in
  // parser.
  //
  if (parser) url.query = parser(url.query);

  //
  // If the URL is relative, resolve the pathname against the base URL.
  //
  if (
      relative
    && location.slashes
    && url.pathname.charAt(0) !== '/'
    && (url.pathname !== '' || location.pathname !== '')
  ) {
    url.pathname = resolve(url.pathname, location.pathname);
  }

  //
  // We should not add port numbers if they are already the default port number
  // for a given protocol. As the host also contains the port number we're going
  // override it with the hostname which contains no port number.
  //
  if (!required(url.port, url.protocol)) {
    url.host = url.hostname;
    url.port = '';
  }

  //
  // Parse down the `auth` for the username and password.
  //
  url.username = url.password = '';
  if (url.auth) {
    instruction = url.auth.split(':');
    url.username = instruction[0] || '';
    url.password = instruction[1] || '';
  }

  url.origin = url.protocol && url.host && url.protocol !== 'file:'
    ? url.protocol +'//'+ url.host
    : 'null';

  //
  // The href is just the compiled result.
  //
  url.href = url.toString();
}

/**
 * This is convenience method for changing properties in the URL instance to
 * insure that they all propagate correctly.
 *
 * @param {String} part          Property we need to adjust.
 * @param {Mixed} value          The newly assigned value.
 * @param {Boolean|Function} fn  When setting the query, it will be the function
 *                               used to parse the query.
 *                               When setting the protocol, double slash will be
 *                               removed from the final url if it is true.
 * @returns {URL} URL instance for chaining.
 * @public
 */
function set(part, value, fn) {
  var url = this;

  switch (part) {
    case 'query':
      if ('string' === typeof value && value.length) {
        value = (fn || qs.parse)(value);
      }

      url[part] = value;
      break;

    case 'port':
      url[part] = value;

      if (!required(value, url.protocol)) {
        url.host = url.hostname;
        url[part] = '';
      } else if (value) {
        url.host = url.hostname +':'+ value;
      }

      break;

    case 'hostname':
      url[part] = value;

      if (url.port) value += ':'+ url.port;
      url.host = value;
      break;

    case 'host':
      url[part] = value;

      if (/:\d+$/.test(value)) {
        value = value.split(':');
        url.port = value.pop();
        url.hostname = value.join(':');
      } else {
        url.hostname = value;
        url.port = '';
      }

      break;

    case 'protocol':
      url.protocol = value.toLowerCase();
      url.slashes = !fn;
      break;

    case 'pathname':
    case 'hash':
      if (value) {
        var char = part === 'pathname' ? '/' : '#';
        url[part] = value.charAt(0) !== char ? char + value : value;
      } else {
        url[part] = value;
      }
      break;

    default:
      url[part] = value;
  }

  for (var i = 0; i < rules.length; i++) {
    var ins = rules[i];

    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();
  }

  url.origin = url.protocol && url.host && url.protocol !== 'file:'
    ? url.protocol +'//'+ url.host
    : 'null';

  url.href = url.toString();

  return url;
}

/**
 * Transform the properties back in to a valid and full URL string.
 *
 * @param {Function} stringify Optional query stringify function.
 * @returns {String} Compiled version of the URL.
 * @public
 */
function toString(stringify) {
  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;

  var query
    , url = this
    , protocol = url.protocol;

  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';

  var result = protocol + (url.slashes ? '//' : '');

  if (url.username) {
    result += url.username;
    if (url.password) result += ':'+ url.password;
    result += '@';
  }

  result += url.host + url.pathname;

  query = 'object' === typeof url.query ? stringify(url.query) : url.query;
  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;

  if (url.hash) result += url.hash;

  return result;
}

Url.prototype = { set: set, toString: toString };

//
// Expose the URL parser and some additional properties that might be useful for
// others or testing.
//
Url.extractProtocol = extractProtocol;
Url.location = lolcation;
Url.trimLeft = trimLeft;
Url.qs = qs;

module.exports = Url;


/***/ }),
/* 88 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


/**
 * Check if we're required to add a port number.
 *
 * @see https://url.spec.whatwg.org/#default-port
 * @param {Number|String} port Port number we need to check
 * @param {String} protocol Protocol we need to check against.
 * @returns {Boolean} Is it a default port for the given protocol
 * @api private
 */
module.exports = function required(port, protocol) {
  protocol = protocol.split(':')[0];
  port = +port;

  if (!port) return false;

  switch (protocol) {
    case 'http':
    case 'ws':
    return port !== 80;

    case 'https':
    case 'wss':
    return port !== 443;

    case 'ftp':
    return port !== 21;

    case 'gopher':
    return port !== 70;

    case 'file':
    return false;
  }

  return port !== 0;
};


/***/ }),
/* 89 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var has = Object.prototype.hasOwnProperty
  , undef;

/**
 * Decode a URI encoded string.
 *
 * @param {String} input The URI encoded string.
 * @returns {String|Null} The decoded string.
 * @api private
 */
function decode(input) {
  try {
    return decodeURIComponent(input.replace(/\+/g, ' '));
  } catch (e) {
    return null;
  }
}

/**
 * Attempts to encode a given input.
 *
 * @param {String} input The string that needs to be encoded.
 * @returns {String|Null} The encoded string.
 * @api private
 */
function encode(input) {
  try {
    return encodeURIComponent(input);
  } catch (e) {
    return null;
  }
}

/**
 * Simple query string parser.
 *
 * @param {String} query The query string that needs to be parsed.
 * @returns {Object}
 * @api public
 */
function querystring(query) {
  var parser = /([^=?#&]+)=?([^&]*)/g
    , result = {}
    , part;

  while (part = parser.exec(query)) {
    var key = decode(part[1])
      , value = decode(part[2]);

    //
    // Prevent overriding of existing properties. This ensures that build-in
    // methods like `toString` or __proto__ are not overriden by malicious
    // querystrings.
    //
    // In the case if failed decoding, we want to omit the key/value pairs
    // from the result.
    //
    if (key === null || value === null || key in result) continue;
    result[key] = value;
  }

  return result;
}

/**
 * Transform a query string to an object.
 *
 * @param {Object} obj Object that should be transformed.
 * @param {String} prefix Optional prefix.
 * @returns {String}
 * @api public
 */
function querystringify(obj, prefix) {
  prefix = prefix || '';

  var pairs = []
    , value
    , key;

  //
  // Optionally prefix with a '?' if needed
  //
  if ('string' !== typeof prefix) prefix = '?';

  for (key in obj) {
    if (has.call(obj, key)) {
      value = obj[key];

      //
      // Edge cases where we actually want to encode the value to an empty
      // string instead of the stringified value.
      //
      if (!value && (value === null || value === undef || isNaN(value))) {
        value = '';
      }

      key = encode(key);
      value = encode(value);

      //
      // If we failed to encode the strings, we should bail out as we don't
      // want to add invalid strings to the query.
      //
      if (key === null || value === null) continue;
      pairs.push(key +'='+ value);
    }
  }

  return pairs.length ? prefix + pairs.join('&') : '';
}

//
// Expose the module.
//
exports.stringify = querystringify;
exports.parse = querystring;


/***/ }),
/* 90 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    class: ['wxc-cell', _vm.hasTopBorder && 'cell-top-border', _vm.hasBottomBorder && 'cell-bottom-border', _vm.hasMargin && 'cell-margin', _vm.hasVerticalIndent && 'cell-indent', _vm.desc && 'has-desc'],
    style: _vm.cellStyle,
    attrs: {
      "accessible": _vm.autoAccessible,
      "ariaLabel": (_vm.label + "," + _vm.title + "," + _vm.desc)
    },
    on: {
      "click": _vm.cellClicked
    }
  }, [_vm._t("label", [(_vm.label) ? _c('div', [_c('text', {
    staticClass: ["cell-label-text"]
  }, [_vm._v(_vm._s(_vm.label))])]) : _vm._e()]), _c('div', {
    staticClass: ["cell-title"]
  }, [_vm._t("title", [_c('text', {
    staticClass: ["cell-content"]
  }, [_vm._v(_vm._s(_vm.title))]), (_vm.desc) ? _c('text', {
    staticClass: ["cell-desc-text"]
  }, [_vm._v(_vm._s(_vm.desc))]) : _vm._e()])], 2), _vm._t("value"), _vm._t("default"), (_vm.extraContent) ? _c('text', {
    staticClass: ["extra-content-text"]
  }, [_vm._v(_vm._s(_vm.extraContent))]) : _vm._e(), (_vm.hasArrow) ? _c('image', {
    staticClass: ["cell-arrow-icon"],
    attrs: {
      "src": _vm.arrowIcon,
      "ariaHidden": true
    }
  }) : _vm._e()], 2)
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 91 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
var CHECKED = exports.CHECKED = 'https://gw.alicdn.com/tfs/TB1Y9vlpwMPMeJjy1XcXXXpppXa-72-72.png';
var DISABLED = exports.DISABLED = 'https://gw.alicdn.com/tfs/TB1PtN3pwMPMeJjy1XdXXasrXXa-72-72.png';

/***/ }),
/* 92 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('wxc-cell', {
    attrs: {
      "hasTopBorder": _vm.hasTopBorder,
      "cellStyle": {
        backgroundColor: _vm.backgroundColor
      },
      "accessible": true,
      "ariaLabel": (_vm.title + ",状态为" + (_vm.checked?'已选中':'未选中') + "," + (_vm.disabled?'不可更改':''))
    },
    on: {
      "wxcCellClicked": _vm.wxcCellClicked
    }
  }, [_c('text', {
    staticClass: ["title-text"],
    style: {
      color: _vm.color
    },
    attrs: {
      "slot": "title"
    },
    slot: "title"
  }, [_vm._v(_vm._s(_vm.title))]), (_vm.radioIcon) ? _c('image', {
    staticClass: ["radio"],
    attrs: {
      "slot": "value",
      "src": _vm.radioIcon
    },
    slot: "value"
  }) : _vm._e()])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 93 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', _vm._l((_vm.updateList), function(item, i) {
    return _c('wxc-radio', _vm._b({
      key: i,
      attrs: {
        "config": _vm.config
      },
      on: {
        "wxcRadioItemChecked": function($event) {
          _vm.wxcRadioItemChecked(i, $event)
        }
      }
    }, 'wxc-radio', item, false))
  }))
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 94 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _index = __webpack_require__(95);

Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_index).default;
  }
});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ }),
/* 95 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(96)
)

/* script */
__vue_exports__ = __webpack_require__(97)

/* template */
var __vue_template__ = __webpack_require__(103)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-mask\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-1d536dbc"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 96 */
/***/ (function(module, exports) {

module.exports = {
  "container": {
    "position": "fixed",
    "width": "750",
    "zIndex": 99999
  },
  "wxc-mask": {
    "position": "fixed"
  },
  "mask-bottom": {
    "width": "100",
    "height": "100",
    "backgroundColor": "rgba(0,0,0,0)",
    "justifyContent": "center",
    "alignItems": "center"
  },
  "mask-close-icon": {
    "width": "64",
    "height": "64"
  }
}

/***/ }),
/* 97 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var _wxcOverlay = __webpack_require__(98);

var _wxcOverlay2 = _interopRequireDefault(_wxcOverlay);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

var animation = weex.requireModule('animation');
exports.default = {
  components: { WxcOverlay: _wxcOverlay2.default },
  props: {
    height: {
      type: [String, Number],
      default: 800
    },
    width: {
      type: [String, Number],
      default: 702
    },
    top: {
      type: Number,
      default: 0
    },
    show: {
      type: Boolean,
      default: false
    },
    showClose: {
      type: Boolean,
      default: false
    },
    duration: {
      type: [String, Number],
      default: 300
    },
    hasOverlay: {
      type: Boolean,
      default: true
    },
    hasAnimation: {
      type: Boolean,
      default: true
    },
    timingFunction: {
      type: Array,
      default: function _default() {
        return ['ease-in', 'ease-out'];
      }
    },
    overlayCfg: {
      type: Object,
      default: function _default() {
        return {
          hasAnimation: true,
          timingFunction: ['ease-in', 'ease-out'],
          canAutoClose: true,
          duration: 300,
          opacity: 0.6
        };
      }
    },
    borderRadius: {
      type: [String, Number],
      default: 0
    },
    overlayCanClose: {
      type: Boolean,
      default: true
    },
    maskBgColor: {
      type: String,
      default: '#ffffff'
    },
    opacity: {
      type: [Number, String],
      default: 0.6
    }
  },
  data: function data() {
    return {
      closeIcon: 'https://gw.alicdn.com/tfs/TB1qDJUpwMPMeJjy1XdXXasrXXa-64-64.png',
      maskTop: 264,
      opened: false
    };
  },
  computed: {
    mergeOverlayCfg: function mergeOverlayCfg() {
      return _extends({}, this.overlayCfg, {
        hasAnimation: this.hasAnimation
      });
    },
    maskStyle: function maskStyle() {
      var width = this.width,
          height = this.height,
          showClose = this.showClose,
          hasAnimation = this.hasAnimation,
          opened = this.opened,
          top = this.top;

      var newHeight = showClose ? height - 0 + 100 : height;
      var _weex$config$env = weex.config.env,
          deviceHeight = _weex$config$env.deviceHeight,
          deviceWidth = _weex$config$env.deviceWidth,
          platform = _weex$config$env.platform;

      var _deviceHeight = deviceHeight || 1334;
      var isWeb = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && platform.toLowerCase() === 'web';
      var navHeight = isWeb ? 0 : 130;
      var pageHeight = _deviceHeight / deviceWidth * 750 - navHeight;
      return {
        width: width + 'px',
        height: newHeight + 'px',
        left: (750 - width) / 2 + 'px',
        top: (top || (pageHeight - height) / 2) + 'px',
        opacity: hasAnimation && !opened ? 0 : 1
      };
    },
    contentStyle: function contentStyle() {
      return {
        width: this.width + 'px',
        backgroundColor: this.maskBgColor,
        height: this.height + 'px',
        borderRadius: this.borderRadius + 'px'
      };
    },
    shouldShow: function shouldShow() {
      var _this = this;

      var show = this.show,
          hasAnimation = this.hasAnimation;

      hasAnimation && setTimeout(function () {
        _this.appearMask(show);
      }, 50);
      return show;
    }
  },
  methods: {
    closeIconClicked: function closeIconClicked() {
      this.appearMask(false);
    },
    wxcOverlayBodyClicking: function wxcOverlayBodyClicking() {
      if (this.hasAnimation) {
        this.appearMask(false);
        this.$emit('wxcOverlayBodyClicking', {});
      }
    },
    wxcOverlayBodyClicked: function wxcOverlayBodyClicked() {
      if (!this.hasAnimation) {
        this.appearMask(false);
        this.$emit('wxcOverlayBodyClicked', {});
      }
    },
    needEmit: function needEmit() {
      var bool = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;

      this.opened = bool;
      !bool && this.$emit('wxcMaskSetHidden', {});
    },
    appearMask: function appearMask(bool) {
      var _this2 = this;

      var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.duration;
      var hasAnimation = this.hasAnimation,
          timingFunction = this.timingFunction;

      var maskEl = this.$refs['wxc-mask'];
      if (hasAnimation && maskEl) {
        animation.transition(maskEl, {
          styles: {
            opacity: bool ? 1 : 0
          },
          duration: duration,
          timingFunction: timingFunction[bool ? 0 : 1],
          delay: 0
        }, function () {
          _this2.needEmit(bool);
        });
      } else {
        this.needEmit(bool);
      }
    }
  }
};

/***/ }),
/* 98 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _index = __webpack_require__(99);

Object.defineProperty(exports, 'default', {
  enumerable: true,
  get: function get() {
    return _interopRequireDefault(_index).default;
  }
});

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

/***/ }),
/* 99 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(100)
)

/* script */
__vue_exports__ = __webpack_require__(101)

/* template */
var __vue_template__ = __webpack_require__(102)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\node_modules\\weex-ui\\packages\\wxc-overlay\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-5dc5d348"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 100 */
/***/ (function(module, exports) {

module.exports = {
  "wxc-overlay": {
    "width": "750",
    "position": "fixed",
    "bottom": 0,
    "right": 0
  }
}

/***/ }),
/* 101 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _utils = __webpack_require__(8);

var _utils2 = _interopRequireDefault(_utils);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

var animation = weex.requireModule('animation');
exports.default = {
  props: {
    show: {
      type: Boolean,
      default: true
    },
    top: {
      type: Number,
      default: 0
    },
    left: {
      type: Number,
      default: 0
    },
    hasAnimation: {
      type: Boolean,
      default: true
    },
    duration: {
      type: [Number, String],
      default: 300
    },
    timingFunction: {
      type: Array,
      default: function _default() {
        return ['ease-in', 'ease-out'];
      }
    },
    opacity: {
      type: [Number, String],
      default: 0.6
    },
    canAutoClose: {
      type: Boolean,
      default: true
    }
  },
  computed: {
    overlayStyle: function overlayStyle() {
      return {
        opacity: this.hasAnimation ? 0 : 1,
        backgroundColor: 'rgba(0, 0, 0,' + this.opacity + ')',
        left: _utils2.default.env.isWeb() ? this.left + 'px' : 0,
        top: this.top + 'px'
      };
    },
    shouldShow: function shouldShow() {
      var _this = this;

      var show = this.show,
          hasAnimation = this.hasAnimation;

      hasAnimation && setTimeout(function () {
        _this.appearOverlay(show);
      }, 50);
      return show;
    }
  },
  methods: {
    overlayClicked: function overlayClicked(e) {
      this.canAutoClose ? this.appearOverlay(false) : this.$emit('wxcOverlayBodyClicked', {});
    },
    appearOverlay: function appearOverlay(bool) {
      var _this2 = this;

      var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.duration;
      var hasAnimation = this.hasAnimation,
          timingFunction = this.timingFunction,
          canAutoClose = this.canAutoClose;

      var needEmit = !bool && canAutoClose;
      needEmit && this.$emit('wxcOverlayBodyClicking', {});
      var overlayEl = this.$refs['wxc-overlay'];
      if (hasAnimation && overlayEl) {
        animation.transition(overlayEl, {
          styles: {
            opacity: bool ? 1 : 0
          },
          duration: duration,
          timingFunction: timingFunction[bool ? 0 : 1],
          delay: 0
        }, function () {
          needEmit && _this2.$emit('wxcOverlayBodyClicked', {});
        });
      } else {
        needEmit && this.$emit('wxcOverlayBodyClicked', {});
      }
    }
  }
};

/***/ }),
/* 102 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [(_vm.show) ? _c('div', {
    ref: "wxc-overlay",
    staticClass: ["wxc-overlay"],
    style: _vm.overlayStyle,
    attrs: {
      "hack": _vm.shouldShow
    },
    on: {
      "click": _vm.overlayClicked
    }
  }) : _vm._e()])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 103 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    staticClass: ["container"]
  }, [(_vm.show) ? _c('wxc-overlay', _vm._b({
    attrs: {
      "show": _vm.show && _vm.hasOverlay,
      "canAutoClose": _vm.overlayCanClose,
      "opacity": _vm.opacity
    },
    on: {
      "wxcOverlayBodyClicking": _vm.wxcOverlayBodyClicking,
      "wxcOverlayBodyClicked": _vm.wxcOverlayBodyClicked
    }
  }, 'wxc-overlay', _vm.mergeOverlayCfg, false)) : _vm._e(), (_vm.show) ? _c('div', {
    ref: "wxc-mask",
    staticClass: ["wxc-mask"],
    style: _vm.maskStyle,
    attrs: {
      "hack": _vm.shouldShow
    }
  }, [_c('div', {
    style: _vm.contentStyle
  }, [_vm._t("default")], 2), (_vm.showClose) ? _c('div', {
    staticClass: ["mask-bottom"],
    style: {
      width: _vm.width + 'px'
    },
    on: {
      "click": _vm.closeIconClicked
    }
  }, [_c('image', {
    staticClass: ["mask-close-icon"],
    attrs: {
      "src": _vm.closeIcon,
      "ariaLabel": "关闭"
    }
  })]) : _vm._e()]) : _vm._e()], 1)
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 104 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(105)
)

/* script */
__vue_exports__ = __webpack_require__(106)

/* template */
var __vue_template__ = __webpack_require__(107)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\components\\category.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-70bb1bee"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 105 */
/***/ (function(module, exports) {

module.exports = {
  "category": {
    "marginTop": "20",
    "paddingLeft": "24",
    "width": "750",
    "height": "68",
    "justifyContent": "center"
  },
  "category-text": {
    "fontWeight": "600",
    "fontSize": "28"
  }
}

/***/ }),
/* 106 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

exports.default = {
    props: {
        title: String,
        color: {
            type: String,
            default: '#FFF100'
        },
        textColor: {
            type: String,
            default: '#000000'
        }
    }
};

/***/ }),
/* 107 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    staticClass: ["category"],
    style: {
      'background-color': _vm.color
    }
  }, [_c('text', {
    staticClass: ["category-text"],
    style: {
      'color': _vm.textColor
    }
  }, [_vm._v(_vm._s(_vm.title))])])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 108 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [_c('div', {
    staticClass: ["order-flag"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.orderNumber))])]), _c('div', {
    staticClass: ["container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('div', {
    staticClass: ["container-first"],
    on: {
      "click": _vm.getFirstArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.firstArg ? _vm.firstArg.name : '1音'))])]), _c('wxc-mask', {
    attrs: {
      "height": "800",
      "width": "702",
      "borderRadius": "0",
      "duration": "200",
      "maskBgColor": "#FFFFFF",
      "hasAnimation": true,
      "hasOverlay": true,
      "showClose": true,
      "show": _vm.intervalMenuVisible
    },
    on: {
      "wxcMaskSetHidden": function($event) {
        _vm.intervalMenuVisible = false
      }
    }
  }, [_c('div', {
    staticClass: ["content"]
  }, [_c('category', {
    attrs: {
      "color": '#000000',
      "textColor": 'white',
      "title": "音程位置选择"
    }
  }), _c('wxc-radio', {
    attrs: {
      "list": _vm.intervalPositionBtn
    },
    on: {
      "wxcRadioListChecked": _vm.intervalPositionClicked
    }
  }), _c('category', {
    attrs: {
      "color": '#000000',
      "textColor": 'white',
      "title": "音程类型选择"
    }
  }), _c('scroller', {
    staticClass: ["scroller"],
    staticStyle: {
      height: "320px"
    }
  }, [_c('wxc-radio', {
    attrs: {
      "list": _vm.intervalBtn
    },
    on: {
      "wxcRadioListChecked": _vm.intervalClicked
    }
  })], 1), _c('wxc-button', {
    staticStyle: {
      width: "680px",
      alignSelf: "center",
      margin: "2px"
    },
    attrs: {
      "text": "确定",
      "type": "white"
    },
    on: {
      "wxcButtonClicked": _vm.confirmIntervalMenu
    }
  })], 1)]), _c('div', {
    staticClass: ["container-last"],
    on: {
      "click": _vm.popIntervalTypeMenu
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.interval.name && _vm.interval.position ? _vm.interval.position + _vm.interval.name : '请选择音程...'))])])], 1), _c('image', {
    staticClass: ["container-del-btn"],
    style: _vm.styles.delBtn,
    attrs: {
      "src": _vm.img.delBtn
    },
    on: {
      "click": _vm.handleDelete
    }
  })])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 109 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(110)
)

/* script */
__vue_exports__ = __webpack_require__(111)

/* template */
var __vue_template__ = __webpack_require__(112)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-result-get-by-interval-show.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-27d7adfa"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 110 */
/***/ (function(module, exports) {

module.exports = {
  "interval-container": {
    "marginTop": "10",
    "marginBottom": "10",
    "width": "525",
    "marginLeft": "65",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "left": "5",
    "borderRadius": "20",
    "borderStyle": "solid",
    "width": "45",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  },
  "interval-container-and": {
    "position": "absolute",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "15",
    "fontSize": "28",
    "bottom": "5"
  }
}

/***/ }),
/* 111 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _common = __webpack_require__(1);

exports.default = {
    name: "music-result-get-by-interval-show",
    props: {
        result: {
            type: Object,
            default: null
        }
    },
    data: function data() {
        return {
            styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                }
            }
        };
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

// 根据音和音程获取二音答案展示组件

/***/ }),
/* 112 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [(_vm.result !== null) ? _c('div', [_c('div', {
    staticClass: ["order-flag"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.index))])]), _c('div', {
    staticClass: ["interval-container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('text', {
    staticClass: ["interval-container-and"],
    staticStyle: {
      left: "15px"
    },
    style: _vm.styles.containerFirstArg
  }, [_vm._v("位于")]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "75px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.first.name))])]), _c('text', {
    staticStyle: {
      position: "absolute",
      left: "170px",
      justifyContent: "center",
      alignItems: "center",
      top: "15px",
      bottom: "5px"
    },
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.interval.position) + _vm._s(_vm.result.interval.name) + "的音为")]), _c('div', {
    staticStyle: {
      position: "absolute",
      right: "5px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      justifyContent: "center",
      alignItems: "center",
      borderColor: "black",
      borderWidth: "1px",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.result))])])])]) : _vm._e()])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 113 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(114)
)

/* script */
__vue_exports__ = __webpack_require__(115)

/* template */
var __vue_template__ = __webpack_require__(116)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-chord-triad-input.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-3ce53c04"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 114 */
/***/ (function(module, exports) {

module.exports = {
  "container": {
    "marginTop": "10",
    "marginBottom": "10",
    "alignSelf": "center",
    "width": "315",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "left": "10",
    "borderRadius": "20",
    "borderStyle": "solid",
    "width": "50",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  },
  "container-del-btn": {
    "position": "absolute",
    "top": "14",
    "right": "5",
    "width": "50"
  }
}

/***/ }),
/* 115 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _pathUtil = __webpack_require__(2);

var _compute = __webpack_require__(0);

var _common = __webpack_require__(1);

exports.default = {
    name: "music-chord-triad-input",
    props: {
        uuid: {
            type: String,
            default: ''
        },
        orderNumber: {
            type: String,
            default: '-1'
        }
    },
    data: function data() {
        return {
            firstArg: null,
            secondArg: null,
            thirdArg: null,
            img: {
                delBtn: (0, _pathUtil.getImagePath)('delete')
            }, styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                orderFlag: {},
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                },
                delBtn: {
                    height: (0, _common.getFormatHeightPX)(55)
                }
            }
        };
    },

    methods: {
        getFirstArg: function getFirstArg() {
            var _this = this;

            this.$emit('pushFirstArg', function (firstArg, cb) {
                _this.firstArg = (0, _compute.getMusicFlagByXYValue)(firstArg.xValue, firstArg.yValue);
                var res = {
                    index: _this.orderNumber,
                    first: _this.firstArg,
                    second: _this.secondArg,
                    third: _this.thirdArg,
                    uuid: _this.uuid
                };
                if (_this.isFinished()) {
                    res['result'] = (0, _compute.getTriad)(_this.firstArg, _this.secondArg, _this.thirdArg);
                    _this.$emit('onFinish', res);
                    cb(res);
                }
            });
        }, getSecondArg: function getSecondArg() {
            var _this2 = this;

            this.$emit('pushSecondArg', function (secondArg, cb) {
                _this2.secondArg = (0, _compute.getMusicFlagByXYValue)(secondArg.xValue, secondArg.yValue);
                var res = {
                    index: _this2.orderNumber,
                    first: _this2.firstArg,
                    second: _this2.secondArg,
                    third: _this2.thirdArg,
                    uuid: _this2.uuid
                };
                if (_this2.isFinished()) {
                    res['result'] = (0, _compute.getTriad)(_this2.firstArg, _this2.secondArg, _this2.thirdArg);
                    _this2.$emit('onFinish', res);
                    cb(res);
                }
            });
        }, getThirdArg: function getThirdArg() {
            var _this3 = this;

            this.$emit('pushThirdArg', function (thirdArg, cb) {
                _this3.thirdArg = (0, _compute.getMusicFlagByXYValue)(thirdArg.xValue, thirdArg.yValue);
                var res = {
                    index: _this3.orderNumber,
                    first: _this3.firstArg,
                    second: _this3.secondArg,
                    third: _this3.thirdArg,
                    uuid: _this3.uuid
                };
                if (_this3.isFinished()) {
                    res['result'] = (0, _compute.getTriad)(_this3.firstArg, _this3.secondArg, _this3.thirdArg);
                    _this3.$emit('onFinish', res);
                    cb(res);
                }
            });
        },
        isFinished: function isFinished() {
            return this.firstArg && this.secondArg && this.thirdArg;
        },
        handleDelete: function handleDelete() {
            this.$emit('onDelete');
        }
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/***/ }),
/* 116 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [_c('div', {
    staticClass: ["order-flag"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.orderNumber))])]), _c('div', {
    staticClass: ["container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('div', {
    staticStyle: {
      position: "absolute",
      left: "20px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    },
    on: {
      "click": _vm.getFirstArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.firstArg ? _vm.firstArg.name : '1音'))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "115px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    },
    on: {
      "click": _vm.getSecondArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.secondArg ? _vm.secondArg.name : '2音'))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      right: "10px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    },
    on: {
      "click": _vm.getThirdArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.thirdArg ? _vm.thirdArg.name : '3音'))])])]), _c('image', {
    staticClass: ["container-del-btn"],
    style: _vm.styles.delBtn,
    attrs: {
      "src": _vm.img.delBtn
    },
    on: {
      "click": _vm.handleDelete
    }
  })])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 117 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(118)
)

/* script */
__vue_exports__ = __webpack_require__(119)

/* template */
var __vue_template__ = __webpack_require__(120)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-chord-seventh-input.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-c32a989e"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 118 */
/***/ (function(module, exports) {

module.exports = {
  "container": {
    "marginTop": "10",
    "marginBottom": "10",
    "alignSelf": "center",
    "width": "335",
    "marginLeft": "15",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "left": "10",
    "borderRadius": "20",
    "borderStyle": "solid",
    "width": "50",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  },
  "container-del-btn": {
    "position": "absolute",
    "top": "14",
    "right": "5",
    "width": "50"
  }
}

/***/ }),
/* 119 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _pathUtil = __webpack_require__(2);

var _compute = __webpack_require__(0);

var _common = __webpack_require__(1);

exports.default = {
    name: "music-chord-seventh-input",
    props: {
        uuid: {
            type: String,
            default: ''
        },
        orderNumber: {
            type: String,
            default: '-1'
        }
    },
    data: function data() {
        return {
            firstArg: null,
            secondArg: null,
            thirdArg: null,
            fourthArg: null,
            img: {
                delBtn: (0, _pathUtil.getImagePath)('delete')
            }, styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                orderFlag: {},
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                },
                delBtn: {
                    height: (0, _common.getFormatHeightPX)(55)
                }
            }
        };
    },

    methods: {
        getFirstArg: function getFirstArg() {
            var _this = this;

            this.$emit('pushFirstArg', function (firstArg, cb) {
                _this.firstArg = (0, _compute.getMusicFlagByXYValue)(firstArg.xValue, firstArg.yValue);
                var res = {
                    index: _this.orderNumber,
                    first: _this.firstArg,
                    second: _this.secondArg,
                    third: _this.thirdArg,
                    fourthArg: _this.fourthArg,
                    uuid: _this.uuid
                };
                if (_this.isFinished()) {
                    res['result'] = (0, _compute.getSeventh)(_this.firstArg, _this.secondArg, _this.thirdArg, _this.fourthArg);
                    _this.$emit('onFinish', res);
                    cb(res);
                }
            });
        }, getSecondArg: function getSecondArg() {
            var _this2 = this;

            this.$emit('pushSecondArg', function (secondArg, cb) {
                _this2.secondArg = (0, _compute.getMusicFlagByXYValue)(secondArg.xValue, secondArg.yValue);
                var res = {
                    index: _this2.orderNumber,
                    first: _this2.firstArg,
                    second: _this2.secondArg,
                    third: _this2.thirdArg,
                    fourthArg: _this2.fourthArg,
                    uuid: _this2.uuid
                };
                if (_this2.isFinished()) {
                    res['result'] = (0, _compute.getSeventh)(_this2.firstArg, _this2.secondArg, _this2.thirdArg, _this2.fourthArg);
                    _this2.$emit('onFinish', res);
                    cb(res);
                }
            });
        }, getThirdArg: function getThirdArg() {
            var _this3 = this;

            this.$emit('pushThirdArg', function (thirdArg, cb) {
                _this3.thirdArg = (0, _compute.getMusicFlagByXYValue)(thirdArg.xValue, thirdArg.yValue);
                var res = {
                    index: _this3.orderNumber,
                    first: _this3.firstArg,
                    second: _this3.secondArg,
                    third: _this3.thirdArg,
                    fourthArg: _this3.fourthArg,
                    uuid: _this3.uuid
                };
                if (_this3.isFinished()) {
                    res['result'] = (0, _compute.getSeventh)(_this3.firstArg, _this3.secondArg, _this3.thirdArg, _this3.fourthArg);
                    _this3.$emit('onFinish', res);
                    cb(res);
                }
            });
        }, getFourthArg: function getFourthArg() {
            var _this4 = this;

            this.$emit('pushFourthArg', function (fourthArg, cb) {
                _this4.fourthArg = (0, _compute.getMusicFlagByXYValue)(fourthArg.xValue, fourthArg.yValue);
                var res = {
                    index: _this4.orderNumber,
                    first: _this4.firstArg,
                    second: _this4.secondArg,
                    third: _this4.thirdArg,
                    fourthArg: _this4.fourthArg,
                    uuid: _this4.uuid
                };
                if (_this4.isFinished()) {
                    res['result'] = (0, _compute.getSeventh)(_this4.firstArg, _this4.secondArg, _this4.thirdArg, _this4.fourthArg);
                    _this4.$emit('onFinish', res);
                    cb(res);
                }
            });
        },
        isFinished: function isFinished() {
            return this.firstArg && this.secondArg && this.thirdArg && this.fourthArg;
        },
        handleDelete: function handleDelete() {
            this.$emit('onDelete');
        }
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/***/ }),
/* 120 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [_c('div', {
    staticClass: ["order-flag"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.orderNumber))])]), _c('div', {
    staticClass: ["container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('div', {
    staticStyle: {
      position: "absolute",
      left: "0",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      transform: "scale(0.9)",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    },
    on: {
      "click": _vm.getFirstArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.firstArg ? _vm.firstArg.name : '1音'))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "80px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      transform: "scale(0.9)",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    },
    on: {
      "click": _vm.getSecondArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.secondArg ? _vm.secondArg.name : '2音'))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "160px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      transform: "scale(0.9)",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    },
    on: {
      "click": _vm.getThirdArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.thirdArg ? _vm.thirdArg.name : '3音'))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      right: "0",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      transform: "scale(0.9)",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    },
    on: {
      "click": _vm.getFourthArg
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.fourthArg ? _vm.fourthArg.name : '4音'))])])]), _c('image', {
    staticClass: ["container-del-btn"],
    style: _vm.styles.delBtn,
    attrs: {
      "src": _vm.img.delBtn
    },
    on: {
      "click": _vm.handleDelete
    }
  })])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 121 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(122)
)

/* script */
__vue_exports__ = __webpack_require__(123)

/* template */
var __vue_template__ = __webpack_require__(124)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-result-get-seventh-show.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-d4c70718"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 122 */
/***/ (function(module, exports) {

module.exports = {
  "interval-container": {
    "marginTop": "10",
    "marginBottom": "10",
    "width": "670",
    "marginLeft": "65",
    "height": "60",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "left": "5",
    "borderRadius": "20",
    "borderStyle": "solid",
    "width": "50",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  }
}

/***/ }),
/* 123 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _common = __webpack_require__(1);

exports.default = {
    name: "music-result-get-seventh-show",
    props: {
        result: {
            type: Object,
            default: null
        }
    },
    data: function data() {
        return {
            styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                }
            }
        };
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

// 根据音和音程获取二音答案展示组件

/***/ }),
/* 124 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [(_vm.result !== null) ? _c('div', [_c('div', {
    staticClass: ["order-flag"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.index))])]), _c('div', {
    staticClass: ["interval-container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('div', {
    staticStyle: {
      position: "absolute",
      left: "10px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      transform: "scale(0.9)",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.first.name))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "95px",
      transform: "scale(0.9)",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.second.name))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "180px",
      borderRadius: "40px",
      borderStyle: "solid",
      transform: "scale(0.9)",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.third.name))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "265px",
      borderRadius: "40px",
      transform: "scale(0.9)",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.fourthArg.name))])]), _c('text', {
    staticStyle: {
      position: "absolute",
      left: "355px",
      justifyContent: "center",
      alignItems: "center",
      top: "15px",
      bottom: "5px"
    },
    style: _vm.styles.containerFirstArg
  }, [_vm._v("对应的和弦为" + _vm._s(_vm.result.result))])])]) : _vm._e()])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 125 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(126)
)

/* script */
__vue_exports__ = __webpack_require__(127)

/* template */
var __vue_template__ = __webpack_require__(128)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\page\\function-module\\components\\music-result-get-triad-show.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-73995c07"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 126 */
/***/ (function(module, exports) {

module.exports = {
  "interval-container": {
    "marginTop": "10",
    "marginBottom": "10",
    "width": "620",
    "marginLeft": "65",
    "height": "60",
    "borderRadius": "40",
    "borderStyle": "solid",
    "justifyContent": "center"
  },
  "order-flag": {
    "position": "absolute",
    "left": "5",
    "borderRadius": "20",
    "borderStyle": "solid",
    "width": "50",
    "borderColor": "#000000",
    "borderWidth": "1",
    "justifyContent": "center",
    "alignItems": "center",
    "top": "10",
    "bottom": "10"
  }
}

/***/ }),
/* 127 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
    value: true
});

var _common = __webpack_require__(1);

exports.default = {
    name: "music-result-get-triad-show",
    props: {
        result: {
            type: Object,
            default: null
        }
    },
    data: function data() {
        return {
            styles: {
                container: {
                    height: (0, _common.getFormatHeightPX)(60)
                },
                containerFirstArg: {
                    'font-size': (0, _common.getFormatHeightPX)(26)
                }
            }
        };
    }
}; //
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

// 根据音和音程获取二音答案展示组件

/***/ }),
/* 128 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', [(_vm.result !== null) ? _c('div', [_c('div', {
    staticClass: ["order-flag"]
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.index))])]), _c('div', {
    staticClass: ["interval-container"],
    style: Object.assign({}, {'border-color': 'black',
      'border-width': '2px'},
      _vm.styles.container)
  }, [_c('div', {
    staticStyle: {
      position: "absolute",
      left: "10px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.first.name))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "105px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.second.name))])]), _c('div', {
    staticStyle: {
      position: "absolute",
      left: "200px",
      borderRadius: "40px",
      borderStyle: "solid",
      width: "90px",
      borderColor: "black",
      borderWidth: "1px",
      justifyContent: "center",
      alignItems: "center",
      top: "5px",
      bottom: "5px"
    }
  }, [_c('text', {
    style: _vm.styles.containerFirstArg
  }, [_vm._v(_vm._s(_vm.result.third.name))])]), _c('text', {
    staticStyle: {
      position: "absolute",
      left: "300px",
      justifyContent: "center",
      alignItems: "center",
      top: "15px",
      bottom: "5px"
    },
    style: _vm.styles.containerFirstArg
  }, [_vm._v("对应的和弦为" + _vm._s(_vm.result.result))])])]) : _vm._e()])
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ }),
/* 129 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    staticStyle: {
      position: "absolute",
      top: "0",
      bottom: "0"
    }
  }, [_c('wxc-minibar', {
    attrs: {
      "backgroundColor": "white",
      "textColor": "black"
    }
  }, [_c('template', {
    slot: "middle"
  }, [_c('text', {
    staticClass: ["topBarFont"]
  }, [_vm._v("功能页")])])], 2), _c('div', {
    staticClass: ["mainContent"]
  }, [_c('div', {
    staticClass: ["musicScoreContainer"],
    style: _vm.styles.musicScoreContainer
  }, [_c('div', {
    staticClass: ["musicScoreTip"],
    style: _vm.styles.musicScoreTip
  }, [_c('image', {
    staticClass: ["tipIcon"],
    attrs: {
      "src": _vm.img.musicScoreUrl
    }
  }), _c('text', {
    staticClass: ["musicScoreIcon"],
    staticStyle: {
      position: "absolute",
      left: "60px"
    }
  }, [_vm._v("乐谱展示")])]), _vm._m(0)]), _c('div', {
    staticStyle: {
      flexDirection: "row",
      marginLeft: "5px"
    }
  }, [_c('div', {
    staticStyle: {
      width: "290px"
    },
    style: _vm.styles.musicInputAndQuestion
  }, [_c('div', {
    staticStyle: {
      borderStyle: "solid",
      borderWidth: "1px",
      borderColor: "#BBBBBB",
      justifyContent: "center"
    },
    style: _vm.styles.musicScoreTip
  }, [_c('image', {
    staticClass: ["tipIcon"],
    attrs: {
      "src": _vm.img.musicFlagUrl
    }
  }), _c('text', {
    staticClass: ["resultIcon"],
    staticStyle: {
      position: "absolute",
      left: "60px"
    }
  }, [_vm._v("音符输入")]), _c('text', {
    staticStyle: {
      position: "absolute",
      fontWeight: "900",
      fontSize: "40px",
      right: "10px"
    },
    on: {
      "click": _vm.popMusicFlagInput
    }
  }, [_vm._v("\n                            +\n                        ")])]), _c('list', {
    ref: "musicFlagScroller",
    staticStyle: {
      borderStyle: "solid",
      borderWidth: "1px",
      borderColor: "#BBBBBB"
    }
  }, [_vm._l((_vm.musicFlagList), function(flag, index) {
    return (_vm.musicFlagList.length > 0) ? _c('cell', {
      key: flag.uuid,
      appendAsTree: true,
      attrs: {
        "append": "tree"
      },
      on: {
        "click": function($event) {
          _vm.switchMusicFlagInput(index)
        }
      }
    }, [_c('music-flag-input', {
      key: flag.uuid,
      attrs: {
        "xValue": flag.xValue,
        "yValue": flag.yValue,
        "isClicked": flag.isClicked
      },
      on: {
        "onDelete": function($event) {
          _vm.musicFlagList.splice(index, 1)
        },
        "update:xValue": function($event) {
          _vm.$set(flag, "xValue", $event)
        },
        "update:yValue": function($event) {
          _vm.$set(flag, "yValue", $event)
        }
      }
    })], 1) : _vm._e()
  }), (_vm.musicFlagList.length === 0) ? _c('cell', {
    staticStyle: {
      alignItems: "center"
    },
    appendAsTree: true,
    attrs: {
      "append": "tree"
    }
  }, [_c('text', {
    staticStyle: {
      marginTop: "125px",
      fontSize: "25px",
      fontWeight: "900"
    }
  }, [_vm._v("请点击右上+号添加音符")])]) : _vm._e()], 2)]), _c('div', {
    staticStyle: {
      width: "450px"
    },
    style: _vm.styles.musicInputAndQuestion
  }, [_c('div', {
    staticStyle: {
      borderStyle: "solid",
      borderWidth: "1px",
      borderColor: "#BBBBBB",
      height: "40wx",
      justifyContent: "center"
    },
    style: _vm.styles.musicScoreTip
  }, [_c('image', {
    staticClass: ["tipIcon"],
    attrs: {
      "src": _vm.img.relevanceUrl
    }
  }), _c('text', {
    staticClass: ["resultIcon"],
    staticStyle: {
      position: "absolute",
      left: "60px"
    }
  }, [_vm._v("问题输入")]), _c('text', {
    staticStyle: {
      position: "absolute",
      fontWeight: "900",
      fontSize: "40px",
      right: "10px"
    },
    on: {
      "click": _vm.popRelationMenu
    }
  }, [_vm._v("\n                            +\n                        ")]), _c('wxc-popover', {
    ref: "wxc-popover",
    attrs: {
      "buttons": _vm.btns,
      "position": _vm.popoverPosition,
      "arrowPosition": _vm.popoverArrowPosition
    },
    on: {
      "wxcPopoverButtonClicked": _vm.popoverButtonClicked
    }
  })], 1), _c('list', {
    ref: "musicFlagScroller",
    staticStyle: {
      borderStyle: "solid",
      borderWidth: "1px",
      borderColor: "#BBBBBB"
    }
  }, [_vm._l((_vm.musicQuestionList), function(item, index) {
    return (_vm.musicQuestionList.length > 0) ? _c('cell', {
      key: item.uuid,
      appendAsTree: true,
      attrs: {
        "append": "tree"
      }
    }, [(item.type === 'interval') ? _c('music-interval-input', {
      key: item.uuid,
      attrs: {
        "uuid": item.uuid,
        "orderNumber": index + 1
      },
      on: {
        "onDelete": function($event) {
          _vm.handleMusicQuestionDelete(item.uuid, index)
        },
        "onFinish": _vm.handleIntervalInputFinished,
        "pushFirstArg": _vm.handlePushArg,
        "pushLastArg": _vm.handlePushArg
      }
    }) : _vm._e(), (item.type === 'getByInterval') ? _c('music-get-by-interval-input', {
      key: item.uuid,
      attrs: {
        "uuid": item.uuid,
        "orderNumber": index + 1
      },
      on: {
        "onDelete": function($event) {
          _vm.handleMusicQuestionDelete(item.uuid, index)
        },
        "onFinish": _vm.handleGetByIntervalFinished,
        "pushFirstArg": _vm.handlePushArg
      }
    }) : _vm._e(), (item.type === 'getTriad') ? _c('music-chord-triad-input', {
      key: item.uuid,
      attrs: {
        "uuid": item.uuid,
        "orderNumber": index + 1
      },
      on: {
        "onDelete": function($event) {
          _vm.handleMusicQuestionDelete(item.uuid, index)
        },
        "onFinish": _vm.handleTriadFinished,
        "pushFirstArg": _vm.handlePushArg,
        "pushSecondArg": _vm.handlePushArg,
        "pushThirdArg": _vm.handlePushArg
      }
    }) : _vm._e(), (item.type === 'getSeventh') ? _c('music-chord-seventh-input', {
      key: item.uuid,
      attrs: {
        "uuid": item.uuid,
        "orderNumber": index + 1
      },
      on: {
        "onDelete": function($event) {
          _vm.handleMusicQuestionDelete(item.uuid, index)
        },
        "onFinish": _vm.handleSeventhFinished,
        "pushFirstArg": _vm.handlePushArg,
        "pushSecondArg": _vm.handlePushArg,
        "pushThirdArg": _vm.handlePushArg,
        "pushFourthArg": _vm.handlePushArg
      }
    }) : _vm._e()], 1) : _vm._e()
  }), (_vm.musicQuestionList.length === 0) ? _c('cell', {
    staticStyle: {
      alignItems: "center"
    },
    appendAsTree: true,
    attrs: {
      "append": "tree"
    }
  }, [_c('text', {
    staticStyle: {
      marginTop: "125px",
      fontSize: "25px",
      fontWeight: "900"
    }
  }, [_vm._v("暂无问题,请点击右上角+号添加")])]) : _vm._e()], 2)])]), _c('div', {
    staticClass: ["resultContainer"],
    style: _vm.styles.resultContainer
  }, [_c('div', {
    staticClass: ["resultTip"],
    style: _vm.styles.musicScoreTip
  }, [_c('image', {
    staticClass: ["tipIcon"],
    attrs: {
      "src": _vm.img.answerUrl
    }
  }), _c('text', {
    staticClass: ["resultIcon"],
    staticStyle: {
      position: "absolute",
      left: "60px"
    }
  }, [_vm._v("答案输出")])]), _c('list', {
    staticStyle: {
      width: "740px",
      marginLeft: "5px",
      borderStyle: "solid",
      borderWidth: "1px",
      borderColor: "#BBBBBB",
      justifyContent: "center"
    }
  }, [(_vm.musicResultList.length === 0) ? _c('cell', {
    staticStyle: {
      alignItems: "center"
    },
    appendAsTree: true,
    attrs: {
      "append": "tree"
    }
  }, [_c('music-get-by-interval-show', {
    attrs: {
      "result": _vm.packageData.temp
    }
  }), _c('text', {
    staticStyle: {
      marginTop: "125px",
      fontSize: "25px",
      fontWeight: "900"
    }
  }, [_vm._v("暂无答案结果,请添加问题输入后查看")])], 1) : _vm._e(), _vm._l((_vm.musicResultList), function(item, index) {
    return (_vm.musicResultList.length > 0) ? _c('cell', {
      key: item.uuid,
      appendAsTree: true,
      attrs: {
        "append": "tree"
      }
    }, [(item.type === 'interval') ? _c('music-result-show', {
      key: item.uuid,
      attrs: {
        "intervalResult": item
      }
    }) : _vm._e(), (item.type === 'getByInterval') ? _c('music-result-get-by-interval-show', {
      key: item.uuid,
      attrs: {
        "result": item
      }
    }) : _vm._e(), (item.type === 'getSeventhChord') ? _c('music-result-get-seventh-show', {
      key: item.uuid,
      attrs: {
        "result": item
      }
    }) : _vm._e(), (item.type === 'getTriad') ? _c('music-result-get-triad-show', {
      key: item.uuid,
      attrs: {
        "result": item
      }
    }) : _vm._e()], 1) : _vm._e()
  })], 2)])]), _c('div', {
    staticStyle: {
      marginLeft: "5px",
      position: "absolute",
      bottom: "0",
      left: "0",
      right: "0",
      background: "whitesmoke",
      flexDirection: "row"
    }
  }, [_vm._l((_vm.packageData.pianoKeyList.filter(function (item) { return !item.offset; })), function(key) {
    return _c('piano-key', {
      key: _vm.index,
      staticClass: ["whiteKey"],
      attrs: {
        "offsetLeft": key.whiteOffset.left.replace('px', ''),
        "xValue": key.xValue,
        "yValue": key.yValue
      },
      on: {
        "pressed": _vm.handleKeyInput,
        "update:xValue": function($event) {
          _vm.$set(key, "xValue", $event)
        },
        "update:yValue": function($event) {
          _vm.$set(key, "yValue", $event)
        }
      }
    })
  }), _vm._l((_vm.packageData.pianoKeyList.filter(function (item) { return item.offset; })), function(key) {
    return _c('piano-key', {
      key: _vm.index,
      staticClass: ["blackKey"],
      style: key.offset,
      attrs: {
        "offsetLeft": key.offset.left.replace('px', ''),
        "xValue": key.xValue,
        "yValue": key.yValue,
        "type": "black"
      },
      on: {
        "pressed": _vm.handleKeyInput,
        "update:xValue": function($event) {
          _vm.$set(key, "xValue", $event)
        },
        "update:yValue": function($event) {
          _vm.$set(key, "yValue", $event)
        }
      }
    })
  })], 2), _c('text', {
    staticStyle: {
      position: "absolute",
      left: "5px",
      width: "60px",
      height: "60px",
      backgroundColor: "whitesmoke",
      borderRadius: "10px",
      borderColor: "black",
      borderWidth: "3px",
      borderStyle: "solid",
      fontSize: "70px",
      fontWeight: "900",
      textAlign: "center",
      paddingTop: "-15px"
    },
    style: _vm.styles.keySubAddBtn,
    on: {
      "click": function($event) {
        _vm.handlePianoKeySwitch('add')
      }
    }
  }, [_vm._v("+\n        ")]), _c('text', {
    staticStyle: {
      position: "absolute",
      right: "0",
      width: "60px",
      height: "60px",
      backgroundColor: "whitesmoke",
      borderRadius: "10px",
      borderColor: "black",
      borderWidth: "3px",
      borderStyle: "solid",
      fontSize: "70px",
      fontWeight: "900",
      textAlign: "center",
      paddingTop: "-15px"
    },
    style: _vm.styles.keySubAddBtn,
    on: {
      "click": function($event) {
        _vm.handlePianoKeySwitch('sub')
      }
    }
  }, [_vm._v("-\n        ")])], 1)
},staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    staticStyle: {
      alignItems: "center"
    }
  }, [_c('text', {
    staticStyle: {
      marginTop: "85px",
      fontSize: "25px",
      fontWeight: "900"
    }
  }, [_vm._v("暂无乐谱")])])
}]}
module.exports.render._withStripped = true

/***/ }),
/* 130 */
/***/ (function(module, exports, __webpack_require__) {

var __vue_exports__, __vue_options__
var __vue_styles__ = []

/* styles */
__vue_styles__.push(__webpack_require__(131)
)

/* script */
__vue_exports__ = __webpack_require__(132)

/* template */
var __vue_template__ = __webpack_require__(133)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
  typeof __vue_exports__.default === "object" ||
  typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
  __vue_options__ = __vue_options__.options
}
__vue_options__.__file = "C:\\Users\\ASUS\\Desktop\\WebFront\\music-computer\\src\\index.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
__vue_options__._scopeId = "data-v-1a4d8e3c"
__vue_options__.style = __vue_options__.style || {}
__vue_styles__.forEach(function (module) {
  for (var name in module) {
    __vue_options__.style[name] = module[name]
  }
})
if (typeof __register_static_styles__ === "function") {
  __register_static_styles__(__vue_options__._scopeId, __vue_styles__)
}

module.exports = __vue_exports__


/***/ }),
/* 131 */
/***/ (function(module, exports) {

module.exports = {}

/***/ }),
/* 132 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
//
//
//
//
//
//

exports.default = {
  name: 'App',
  data: function data() {
    return {};
  }
};

/***/ }),
/* 133 */
/***/ (function(module, exports) {

module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
  return _c('div', {
    staticClass: ["wrapper"]
  }, [_c('router-view')], 1)
},staticRenderFns: []}
module.exports.render._withStripped = true

/***/ })
/******/ ]);